html,body,#root{margin:0;padding:0;min-height:100%;height:100%;background:var(--tg-theme-secondary-bg-color, var(--surface, #eef0f4));color:var(--tg-theme-text-color, var(--text, #111827))}@media (prefers-color-scheme: dark){html:not([data-theme=light]),html:not([data-theme=light]) body,html:not([data-theme=light]) #root{background:var(--tg-theme-secondary-bg-color, #0f1115);color:var(--tg-theme-text-color, #f3f4f6)}}:root,html[data-theme=light]{--surface: var(--tg-theme-secondary-bg-color, #eef0f4);--card: var(--tg-theme-bg-color, #ffffff);--text: var(--tg-theme-text-color, #111827);--hint: var(--tg-theme-hint-color, #6b7280);--accent: var(--tg-theme-button-color, #2481cc);--accent-text: var(--tg-theme-button-text-color, #ffffff);--danger: #f94144;--border: rgba(17, 24, 39, .12);--overlay: rgba(15, 23, 42, .45);--shadow: 0 1px 0 rgba(15, 23, 42, .06);--hour-height: 2.5rem;--timeline-hours: 14;--timeline-viewport: min(38vh, 15rem)}html[data-theme=dark]{--surface: var(--tg-theme-secondary-bg-color, #0f1115);--card: var(--tg-theme-bg-color, #1c1f26);--text: var(--tg-theme-text-color, #f3f4f6);--hint: var(--tg-theme-hint-color, #9ca3af);--accent: var(--tg-theme-button-color, #3b9eff);--accent-text: var(--tg-theme-button-text-color, #ffffff);--danger: #ff6b6e;--border: rgba(255, 255, 255, .12);--overlay: rgba(0, 0, 0, .62);--shadow: 0 1px 0 rgba(0, 0, 0, .35)}@media (prefers-color-scheme: dark){html:not([data-theme=light]){--surface: var(--tg-theme-secondary-bg-color, #0f1115);--card: var(--tg-theme-bg-color, #1c1f26);--text: var(--tg-theme-text-color, #f3f4f6);--hint: var(--tg-theme-hint-color, #9ca3af);--accent: var(--tg-theme-button-color, #3b9eff);--accent-text: var(--tg-theme-button-text-color, #ffffff);--danger: #ff6b6e;--border: rgba(255, 255, 255, .12);--overlay: rgba(0, 0, 0, .62);--shadow: 0 1px 0 rgba(0, 0, 0, .35)}}*{box-sizing:border-box}.app{min-height:100%;max-width:560px;margin:0 auto;padding:.85rem 1rem 1.25rem;display:flex;flex-direction:column;gap:.85rem;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;color:var(--text);background:radial-gradient(120% 80% at 10% -10%,color-mix(in srgb,var(--accent) 18%,transparent),transparent 55%),var(--surface)}.app-header{display:flex;align-items:center;justify-content:space-between;gap:.75rem}.app-header h1{font-size:1.35rem;margin:0;letter-spacing:-.02em}.muted{color:var(--hint)}.error-banner{background:color-mix(in srgb,var(--danger) 14%,transparent);color:var(--danger);padding:.6rem .8rem;border-radius:.6rem;margin:0}.loading-hint{font-size:.85rem;margin:0}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.btn{border:none;border-radius:.6rem;padding:.55rem .9rem;font-size:.95rem;cursor:pointer;background:var(--card);color:var(--text);transition:opacity .15s ease,transform .12s ease,background-color .15s ease}.btn:active:not(:disabled){transform:scale(.97);opacity:.9}.btn:disabled{opacity:.5;cursor:default}.btn-primary{background:var(--accent);color:var(--accent-text)}.btn-secondary{background:var(--card);border:1px solid var(--border)}.btn-danger{background:var(--danger);color:#fff}.btn-small{padding:.35rem .6rem;font-size:.85rem}.btn-icon{width:2.4rem;height:2.4rem;font-size:1.3rem;line-height:1;border:1px solid var(--border);display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}.month-view{background:var(--card);border-radius:1rem;padding:.85rem;display:flex;flex-direction:column;gap:.65rem;box-shadow:var(--shadow)}.month-header{display:flex;align-items:center;justify-content:space-between;gap:.5rem}.month-title-block{display:flex;flex-direction:column;align-items:center;gap:.2rem;min-width:0}.month-title{font-weight:650;font-size:1.1rem;letter-spacing:-.01em}.year-picker select{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:999px;padding:.2rem .7rem;font-size:.85rem;font-weight:600;text-align:center;cursor:pointer}.today-btn{align-self:center}.weekday-row,.day-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:.3rem}.weekday-cell{text-align:center;font-size:.72rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--hint);padding-bottom:.15rem}.month-swipe-area{touch-action:pan-y;overflow:hidden;border-radius:.75rem}.month-slide--out-left{animation:month-out-left .16s ease forwards}.month-slide--out-right{animation:month-out-right .16s ease forwards}.month-slide--in-left{animation:month-in-left .18s ease}.month-slide--in-right{animation:month-in-right .18s ease}.day-cell{aspect-ratio:1 / 1;border:1.5px solid transparent;border-radius:.65rem;background:var(--surface);color:var(--text);display:grid;place-items:center;position:relative;padding:0;cursor:pointer;transition:transform .12s ease,background-color .15s ease,border-color .15s ease}.day-cell:active{transform:scale(.94)}.day-cell--muted{opacity:.38}.day-cell--busy{background:color-mix(in srgb,var(--danger) 18%,var(--surface))}.day-cell--today{border-color:var(--accent)}.day-cell--selected{outline:2px solid var(--accent);outline-offset:1px}.day-number{font-size:.88rem;font-weight:600;line-height:1;text-align:center}.day-dots{position:absolute;left:50%;bottom:.28rem;transform:translate(-50%);display:flex;gap:2px;justify-content:center;pointer-events:none}.task-dot{width:5px;height:5px;border-radius:50%;display:inline-block}.legend{display:flex;align-items:center;gap:.5rem;font-size:.8rem;color:var(--hint);padding-top:.15rem}.legend-swatch{width:.9rem;height:.9rem;border-radius:.3rem;display:inline-block}.legend-swatch--busy{background:color-mix(in srgb,var(--danger) 18%,var(--surface))}.day-view{background:var(--card);border-radius:1rem;padding:.85rem;display:flex;flex-direction:column;gap:.65rem;box-shadow:var(--shadow)}.day-view-header{display:flex;align-items:center;gap:.6rem}.day-view-title{font-weight:650;font-size:1.05rem;display:flex;flex-wrap:wrap;align-items:center;gap:.45rem;letter-spacing:-.01em}.busy-badge{font-size:.68rem;font-weight:600;color:var(--danger);background:color-mix(in srgb,var(--danger) 14%,transparent);padding:.18rem .5rem;border-radius:999px}.day-empty{text-align:center;padding:.15rem 0;margin:0;font-size:.88rem}.exception-bar{display:flex;flex-direction:column;gap:.45rem;padding:.55rem .65rem;background:var(--surface);border-radius:.7rem}.exception-bar-row{display:flex;flex-wrap:wrap;align-items:center;gap:.45rem}.exception-bar select{flex:1;min-width:8rem;padding:.4rem .5rem;border:1px solid var(--border);border-radius:.5rem;background:var(--card);color:var(--text);font-size:.9rem}.timeline{position:relative;height:var(--timeline-viewport);min-height:12rem;max-height:var(--timeline-viewport);overflow-y:auto;overflow-x:hidden;border-radius:.75rem;background:var(--surface);-webkit-overflow-scrolling:touch;overscroll-behavior:contain}.timeline-hours{position:relative;height:calc(var(--hour-height) * var(--timeline-hours))}.timeline-hour{position:absolute;left:0;right:0;height:var(--hour-height);border-top:1px solid var(--border);pointer-events:none}.timeline-hour-label{position:absolute;left:.45rem;top:-.55rem;font-size:.68rem;font-weight:600;color:var(--hint);background:var(--surface);padding:0 .2rem}.timeline-events-scroll{position:absolute;top:0;right:.35rem;bottom:0;left:2.55rem;overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch}.timeline-events{position:relative;height:100%;min-width:100%}.timeline-block{position:absolute;border:none;border-radius:.55rem;padding:.28rem 1.4rem .28rem .4rem;text-align:left;color:#fff;cursor:pointer;overflow:hidden;box-shadow:0 1px 3px #00000038;transition:transform .12s ease,filter .12s ease;display:flex;flex-direction:column;gap:.08rem;min-height:1.25rem;min-width:0;box-sizing:border-box}.timeline-block:active{transform:scale(.98);filter:brightness(.95)}.timeline-block-time{font-size:.62rem;opacity:.9;font-weight:600;line-height:1.1}.timeline-block-title{font-size:.78rem;font-weight:600;line-height:1.15;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.timeline-block-delete{position:absolute;top:.15rem;right:.15rem;width:1.25rem;height:1.25rem;border:none;border-radius:.35rem;background:#00000047;color:#fff;font-size:.75rem;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0}.timeline-block-delete:active{background:#00000073}.day-task-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.4rem}.day-task-row{display:flex;align-items:center;gap:.45rem;background:var(--surface);border-left:4px solid var(--accent);border-radius:.55rem;padding:.35rem .4rem .35rem .55rem}.day-task-main{flex:1;min-width:0;border:none;background:transparent;color:var(--text);text-align:left;padding:.25rem 0;cursor:pointer;display:flex;flex-direction:column;gap:.1rem}.day-task-time{font-size:.72rem;color:var(--hint);font-weight:600}.day-task-title{font-size:.9rem;font-weight:560;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.add-task-btn{align-self:stretch;border-radius:.75rem;padding:.7rem 1rem;font-weight:600;box-shadow:0 4px 14px color-mix(in srgb,var(--accent) 28%,transparent)}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--overlay);display:flex;align-items:flex-end;justify-content:center;padding:0;z-index:50;overflow-y:auto;-webkit-overflow-scrolling:touch;animation:overlay-in .2s ease}.modal-content{background:var(--card);border-radius:1rem 1rem 0 0;padding:1rem 1rem calc(1rem + env(safe-area-inset-bottom,0px));width:100%;max-width:480px;margin-top:auto;overflow:visible;animation:sheet-up .28s cubic-bezier(.22,1,.36,1);box-shadow:0 -8px 28px #0000002e}.task-form,.recurrence-form,.prompt{display:flex;flex-direction:column;gap:.8rem}.task-form h2,.recurrence-form h2,.prompt h2,.recurrence-form h3{margin:0;font-size:1.15rem;letter-spacing:-.01em}.recurrence-form h3{font-size:1rem;margin-top:.25rem}.field{display:flex;flex-direction:column;gap:.3rem;font-size:.9rem}.field>span{color:var(--hint)}.field input,.field select{width:100%;min-width:0;box-sizing:border-box;padding:.55rem .6rem;border:1px solid var(--border);border-radius:.5rem;background:var(--surface);color:var(--text);font-size:1rem}.field-inline{flex-direction:row;align-items:center;gap:.5rem}.field-row{display:flex;flex-wrap:wrap;gap:.6rem}.field-row .field{flex:1 1 8rem;min-width:0}.recurrence-hint{margin:0;font-size:.88rem;color:var(--hint);line-height:1.35}.recurrence-create,.exception-create{display:flex;flex-direction:column;gap:.75rem}.recurrence-summary{margin:0;font-size:.85rem;line-height:1.35}.preset-row{display:flex;flex-wrap:wrap;gap:.4rem}.preset-chip{border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:999px;padding:.4rem .7rem;font-size:.82rem;font-weight:600;cursor:pointer}.preset-chip.selected{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 18%,var(--surface));color:var(--text)}.rule-item-meta{font-weight:400}.color-picker{display:flex;flex-wrap:wrap;gap:.4rem}.color-swatch{width:1.8rem;height:1.8rem;border-radius:50%;border:2px solid transparent;cursor:pointer;transition:transform .12s ease}.color-swatch:active{transform:scale(.92)}.color-swatch.selected{border-color:var(--text);transform:scale(1.1)}.form-actions{display:flex;justify-content:flex-end;gap:.6rem;margin-top:.3rem}.form-actions--column{flex-direction:column}.rule-list,.exception-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.4rem}.rule-item,.exception-item{display:flex;align-items:center;justify-content:space-between;gap:.5rem;background:var(--surface);border-radius:.55rem;padding:.5rem .6rem;font-size:.9rem}.exception-section{display:flex;flex-direction:column;gap:.65rem;padding-top:.35rem;border-top:1px solid var(--border)}@keyframes month-out-left{to{opacity:.35;transform:translate(-18%)}}@keyframes month-out-right{to{opacity:.35;transform:translate(18%)}}@keyframes month-in-left{0%{opacity:.35;transform:translate(-18%)}to{opacity:1;transform:translate(0)}}@keyframes month-in-right{0%{opacity:.35;transform:translate(18%)}to{opacity:1;transform:translate(0)}}@keyframes overlay-in{0%{opacity:0}to{opacity:1}}@keyframes sheet-up{0%{opacity:.6;transform:translateY(1.25rem)}to{opacity:1;transform:translateY(0)}}@media (prefers-reduced-motion: reduce){.month-swipe-area,.modal-overlay,.modal-content{animation:none!important}}
