:root{--bg:#101116;--surface:#1a1c23;--surface-2:#23262f;--border:#2e323d;--text:#e8eaf0;--text-dim:#9aa0ae;--accent:#6ea8fe;--accent-strong:#3b82f6;--danger:#f87171;--cell-empty:#2a2d36;--radius:12px;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--text);overscroll-behavior-y:none;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:15px}button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:none}input,textarea{font:inherit;color:var(--text);background:var(--surface-2);border:1px solid var(--border);border-radius:8px;width:100%;padding:10px 12px}input:focus,textarea:focus{outline:2px solid var(--accent-strong);border-color:#0000}.app-shell{flex-direction:column;height:100dvh;display:flex}.app-main{flex:1;min-height:0;position:relative}.scroll-container{-webkit-overflow-scrolling:touch;height:100%;overflow-y:auto}.tab-bar{border-top:1px solid var(--border);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);padding-bottom:env(safe-area-inset-bottom);background:#14151beb;display:flex}.tab{color:var(--text-dim);flex-direction:column;flex:1;align-items:center;gap:2px;padding:8px 0 6px;display:flex}.tab.active{color:var(--accent)}.tab-icon{font-size:18px;line-height:1}.tab-label{font-size:11px}.ptr-indicator{color:var(--text-dim);justify-content:center;align-items:flex-end;padding-bottom:6px;font-size:13px;transition:height .15s;display:flex;overflow:hidden}.spinner{border:2px solid var(--border);border-top-color:var(--accent);border-radius:50%;width:18px;height:18px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.empty-state{text-align:center;height:100%;color:var(--text-dim);flex-direction:column;justify-content:center;align-items:center;gap:12px;padding:32px;display:flex}.section-label{text-transform:uppercase;letter-spacing:.08em;color:var(--text-dim);margin:20px 0 8px;font-size:12px}.error-text{color:var(--danger);word-break:break-word;margin:10px 0;font-size:13px}.muted{color:var(--text-dim);font-weight:400}.btn-primary{background:var(--accent-strong);color:#fff;border-radius:var(--radius);width:100%;padding:13px 18px;font-weight:600}.btn-primary:disabled{opacity:.6}.btn-secondary{background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius);width:100%;padding:12px 18px}.btn-text{color:var(--accent);padding:6px}.btn-text.danger{color:var(--danger)}.btn-link{color:var(--accent);text-align:left;padding:8px 0;font-size:14px}.btn-stack{flex-direction:column;gap:10px;margin-top:16px;display:flex}.swatch{border-radius:4px;flex-shrink:0;width:14px;height:14px;display:inline-block}.swatch-clear{border:1px dashed var(--text-dim)}.chip{background:var(--surface-2);color:var(--text-dim);border-radius:999px;padding:2px 8px;font-size:11px}.chip-today{background:var(--accent-strong);color:#fff}.modal-backdrop{z-index:50;background:#0000008c;align-items:flex-end;display:flex;position:fixed;inset:0}.modal-sheet{background:var(--surface);padding:18px 18px calc(18px + env(safe-area-inset-bottom));border-radius:16px 16px 0 0;width:100%;max-height:85vh;animation:.2s slide-up;overflow-y:auto}@keyframes slide-up{0%{opacity:0;transform:translateY(24px)}to{opacity:1;transform:translateY(0)}}.modal-header{justify-content:space-between;align-items:center;margin-bottom:14px;display:flex}.field{flex-direction:column;gap:5px;margin-bottom:12px;display:flex}.field-label{color:var(--text-dim);font-size:13px}.field-hint{color:var(--text-dim);font-size:12px}.field-row{gap:8px;display:flex}.field-row .field{flex:1;min-width:0}.daily-list{padding:8px 12px}.month-divider{z-index:5;background:var(--bg);color:var(--accent);padding:10px 4px 6px;font-size:15px;font-weight:700;position:sticky;top:0}.day-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);gap:12px;margin-bottom:8px;padding:10px 12px;display:flex}.day-card.empty{opacity:.75;background:0 0;border-style:dashed}.day-card.today{border-color:var(--accent-strong);box-shadow:0 0 0 1px var(--accent-strong)}.day-card-date{flex-direction:column;align-items:center;gap:2px;min-width:44px;display:flex}.day-num{font-size:19px;font-weight:700;line-height:1.1}.day-weekday{color:var(--text-dim);text-transform:uppercase;font-size:11px}.day-card-body{flex-direction:column;flex:1;justify-content:center;gap:4px;min-width:0;display:flex}.field-line{word-break:break-word;font-size:14px;line-height:1.35}.milestone-line{color:#fbbf24;font-size:14px;font-weight:600}.placeholder-line{color:var(--text-dim);font-size:13px}.tag{text-transform:uppercase;letter-spacing:.05em;vertical-align:1px;border-radius:4px;margin-right:4px;padding:1px 6px;font-size:10px;font-weight:700}.tag-event{color:#d6ccff;background:#4c3a99}.tag-plan{color:#a9d6ff;background:#1e4a6e}.tag-done{color:#a9f0c8;background:#1e5c3a}.fab{background:var(--accent-strong);color:#fff;z-index:10;border-radius:999px;padding:12px 20px;font-weight:600;position:absolute;bottom:16px;right:16px;box-shadow:0 4px 16px #0006}.ym-view{flex-direction:column;height:100%;display:flex}.month-nav{justify-content:space-between;align-items:center;padding:8px 6px 4px;display:flex}.month-nav-title{font-size:17px;font-weight:700}.month-nav-arrow{color:var(--accent);padding:4px 18px;font-size:24px;line-height:1}.month-nav-arrow:disabled{color:var(--border)}.month-pager{scroll-snap-type:x mandatory;overscroll-behavior-x:contain;scrollbar-width:none;flex:1;min-height:0;display:flex;overflow:auto hidden}.month-pager::-webkit-scrollbar{display:none}.month-page{scroll-snap-align:start;scroll-snap-stop:always;flex:0 0 100%;width:100%;height:100%}.year-segment-header{z-index:5;background:var(--bg);color:var(--accent);padding:10px 14px 6px;font-size:15px;font-weight:700;position:sticky;top:0}.day-list{padding:0 12px}.day-list-empty{color:var(--text-dim);padding:12px 14px;font-size:13px}.day-row{text-align:left;border-bottom:1px solid var(--border);align-items:center;gap:10px;width:100%;min-height:34px;padding:5px 6px;display:flex}.day-row.today{box-shadow:inset 0 0 0 1px var(--accent-strong);background:#3b82f624;border-bottom-color:#0000;border-radius:8px}.day-row-num{background:var(--surface-2);border-radius:6px;flex-shrink:0;justify-content:center;align-items:center;width:28px;height:24px;font-size:13px;font-weight:600;display:inline-flex}.day-row-num.weekend:not([style]){color:var(--text-dim)}.day-row-weekday{color:var(--text-dim);text-transform:uppercase;flex-shrink:0;width:30px;font-size:11px}.day-row-text{white-space:pre-wrap;word-break:break-word;flex:1;font-size:13px;line-height:1.3}.sheet-view{padding:12px 16px;overflow-x:auto}.sheet-year{width:max-content;min-width:100%;margin-bottom:28px}.sheet-year-header{color:var(--accent);padding:6px 2px 10px;font-size:18px;font-weight:700}.sheet-months{grid-template-columns:repeat(12,minmax(170px,1fr));gap:10px;padding-bottom:8px;display:grid}.sheet-month{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);min-width:0;padding:8px}.sheet-month-title{padding:2px 4px 8px;font-size:13px;font-weight:700}.sheet-month .day-row{gap:6px;min-height:26px;padding:2px 4px}.sheet-month .day-row-num{width:24px;height:20px;font-size:11px}.sheet-month .day-row-weekday{width:22px;font-size:9px}.sheet-month .day-row-text{font-size:12px}.goals-details{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);margin:0 12px 8px}.goals-details summary{color:var(--text-dim);cursor:pointer;padding:10px 14px;font-size:13px;font-weight:600;list-style:none}.goals-details summary:before{content:"▸ ";color:var(--accent)}.goals-details[open] summary:before{content:"▾ "}.goals-card{flex-direction:column;gap:12px;padding:4px 14px 12px;display:flex}.goal-group-title{text-transform:uppercase;letter-spacing:.06em;color:var(--accent);margin-bottom:6px;font-size:12px;font-weight:700}.goal-row{justify-content:space-between;align-items:center;gap:10px;padding:4px 0;display:flex}.goal-label{flex:1;min-width:0;font-size:14px}.goal-segments{border:1px solid var(--border);border-radius:8px;display:flex;overflow:hidden}.goal-seg{background:var(--surface-2);width:40px;color:var(--text-dim);border-right:1px solid var(--border);padding:6px 0}.goal-seg:last-child{border-right:none}.goal-seg.active{background:var(--accent-strong);color:#fff}.legend-strip{color:var(--text-dim);flex-wrap:wrap;gap:6px 14px;padding:2px 14px 8px;font-size:12px;display:flex}.legend-item{align-items:center;gap:5px;display:inline-flex}.day-note{color:var(--text-dim);margin:0 0 12px}.legend-buttons{flex-direction:column;gap:8px;display:flex}.legend-btn{background:var(--surface-2);border:1px solid var(--border);text-align:left;border-radius:10px;align-items:center;gap:10px;padding:12px;display:flex}.legend-btn.active{border-color:var(--accent-strong)}.years-view{padding:12px}.years-hint{color:var(--text-dim);margin-bottom:12px;font-size:12px}.years-band{grid-template-columns:repeat(10,1fr);gap:4px;margin-bottom:14px;display:grid}.year-col{background:var(--surface);border:1px solid var(--border);border-radius:8px;flex-direction:column;align-items:center;gap:3px;padding:4px 1px;display:flex}.year-col.current{border-color:var(--accent-strong);box-shadow:0 0 0 1px var(--accent-strong)}.year-col-year{font-size:11px;font-weight:700}.year-col-age{color:var(--text-dim);min-height:11px;font-size:9px}.year-col-months{flex-direction:column;align-items:center;gap:2px;width:100%;display:flex}.month-dot{border-radius:2px;width:70%;height:7px}.month-dot.now{outline:1.5px solid var(--accent)}.year-detail-months{flex-direction:column;gap:8px;display:flex}.year-detail-row{align-items:center;gap:10px;display:flex}.year-detail-month{width:34px;color:var(--text-dim);font-size:13px}.year-detail-text{flex:1;font-size:14px}.settings{max-width:560px;margin:0 auto;padding:16px}.settings h2{margin:4px 0 14px}.status-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);align-items:center;gap:8px;padding:12px 14px;font-size:14px;display:flex}.status-dot{background:var(--text-dim);border-radius:50%;flex-shrink:0;width:9px;height:9px}.status-dot.ok{background:#34d399}.status-dot.warn{background:#fbbf24}.status-dot.demo{background:#a78bfa}.guide{color:var(--text-dim);margin:6px 0 12px;padding-left:20px;font-size:14px;line-height:1.5}.guide a{color:var(--accent)}.guide code{background:var(--surface-2);border-radius:4px;padding:1px 5px;font-size:12px}
