:root{--tg-bg_color: #fff;--tg-text_color: #111;--tg-hint_color: #888;--tg-link_color: #2481cc;--tg-button_color: #2481cc;--tg-button_text_color: #fff;--tg-secondary_bg_color: #f1f1f4}*{box-sizing:border-box}body{margin:0;background:var(--tg-bg_color);color:var(--tg-text_color);font:15px/1.4 system-ui,sans-serif}a{color:var(--tg-link_color);text-decoration:none}.app{max-width:640px;margin:0 auto;padding:16px 16px 88px}.screen h1{font-size:20px;margin:4px 0 12px}.screen h2{font-size:16px;margin:20px 0 8px}.muted{color:var(--tg-hint_color)}.small{font-size:12px}.center{text-align:center;margin-top:40vh}.error,.field-error{color:#d93025}.field-error{font-size:12px;margin:4px 0 0}.empty{padding:24px 0}.eyebrow{font-size:12px;color:var(--tg-hint_color)}.task-head h1{margin:2px 0}.instruction{background:var(--tg-secondary_bg_color);border-radius:12px;padding:12px;white-space:pre-wrap}.notice{background:#fff4d6;color:#5c4400;border-radius:12px;padding:10px 12px;margin:8px 0}.due{font-size:12px;color:var(--tg-hint_color)}.due.due_soon{color:#b26a00}.due.overdue{color:#d93025;font-weight:600}.group{margin-bottom:16px}.group-title{display:block;font-weight:600;margin-bottom:4px;color:var(--tg-text_color)}.task-row,.done-row{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:12px 0;border-bottom:1px solid rgba(128,128,128,.2);color:var(--tg-text_color)}.task-title{font-weight:500}.field{margin:14px 0}.field-label{display:block;font-size:13px;margin-bottom:4px}.req{color:#d93025}input:not([type=checkbox]):not([type=radio]):not([type=file]),select,textarea{width:100%;padding:10px 12px;border-radius:10px;border:1px solid rgba(128,128,128,.35);background:var(--tg-bg_color);color:var(--tg-text_color);font:inherit}.field.invalid input,.field.invalid select,.field.invalid textarea{border-color:#d93025}.choices{display:flex;flex-direction:column;gap:6px}.choice{display:flex;gap:8px;align-items:center}.upload{display:flex;flex-direction:column;gap:6px}.upload input[type=file]{display:none}.upload-btn{display:inline-block;padding:10px 12px;border-radius:10px;border:1px dashed var(--tg-button_color);color:var(--tg-button_color);text-align:center}.upload-btn.busy{opacity:.6}.file-ok{color:#1e8e3e}.outcomes{border:0;padding:0;margin:16px 0}.outcomes legend{font-size:13px;margin-bottom:6px}.outcome{display:grid;grid-template-columns:auto 1fr;gap:2px 8px;padding:10px;border-radius:10px;border:1px solid rgba(128,128,128,.3);margin-bottom:6px}.outcome small{grid-column:2;color:var(--tg-hint_color)}.outcome.danger span{color:#d93025}button{font:inherit;border:0;border-radius:12px;padding:12px 16px;cursor:pointer}button:disabled{opacity:.6}.primary{background:var(--tg-button_color);color:var(--tg-button_text_color);width:100%}.primary.sticky{position:sticky;bottom:72px;margin-top:16px}.secondary{background:var(--tg-secondary_bg_color);color:var(--tg-text_color)}.secondary.block{display:block;text-align:center;padding:12px;border-radius:12px;margin-top:20px}.link{background:none;color:var(--tg-link_color);padding:0 4px}.card{background:var(--tg-secondary_bg_color);border-radius:12px;padding:12px;margin:12px 0;display:flex;flex-direction:column;gap:8px}.card h2{margin:0}.cards{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.cards .card{margin:0}.cards b{font-size:20px}.cards span{font-size:12px;color:var(--tg-hint_color)}.chat .messages{display:flex;flex-direction:column;gap:8px;max-height:calc(100vh - 220px);overflow-y:auto}.bubble{max-width:85%;padding:8px 12px;border-radius:14px;white-space:pre-wrap}.bubble.mine{align-self:flex-end;background:var(--tg-button_color);color:var(--tg-button_text_color)}.bubble.mine .muted{color:#ffffffbf}.bubble.theirs{align-self:flex-start;background:var(--tg-secondary_bg_color)}.composer{display:flex;gap:8px;position:sticky;bottom:72px;margin-top:12px}.composer button{width:auto}.tabs{position:fixed;left:0;right:0;bottom:0;display:flex;background:var(--tg-bg_color);border-top:1px solid rgba(128,128,128,.2);padding-bottom:env(safe-area-inset-bottom)}.tabs a{flex:1;text-align:center;padding:14px 0;color:var(--tg-hint_color)}.tabs a.active{color:var(--tg-button_color);font-weight:600}
