:root{--bg: var(--tg-theme-secondary-bg-color, #e7ebf0);--surface: var(--tg-theme-bg-color, #ffffff);--section: var(--tg-theme-section-bg-color, #ffffff);--ink: var(--tg-theme-text-color, #0f1722);--ink-soft: var(--tg-theme-subtitle-text-color, #5b6675);--ink-faint: var(--tg-theme-hint-color, #8b94a3);--accent: var(--tg-theme-button-color, #2f81d6);--accent-ink: var(--tg-theme-button-text-color, #ffffff);--link: var(--tg-theme-link-color, #2f81d6);--destructive: var(--tg-theme-destructive-text-color, #c0392b);--line: var(--tg-theme-section-separator-color, #d7dde6);--line-soft: #e7ebf0;--green: #2fa36b;--green-soft: #e4f4ec;--pred-fill: #eef2f7;--pred-stroke: #9fb0c4;--conf-fill: #dcefe4;--conf-stroke: #2fa36b;--night-fill: #cdddf2;--night-stroke: #3f73b5;--tap-fill: #fde8c8;--tap-stroke: #e6952f;--fact-fill: #dcefe4;--fact-stroke: #2fa36b;--shadow: 0 1px 2px rgba(16, 24, 40, .1), 0 1px 1px rgba(16, 24, 40, .04);--radius-bubble: 14px;--radius-btn: 10px;--row-h: 30px}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{margin:0;padding:0;height:100%}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;color:var(--ink);background:var(--bg);font-size:15px;line-height:1.4;-webkit-font-smoothing:antialiased;overflow:hidden}#root{height:100%}.app{max-width:380px;height:100%;margin:0 auto;background:var(--bg);display:flex;flex-direction:column;position:relative;overflow:hidden}.app-header{flex:0 0 auto;display:flex;align-items:center;justify-content:space-between;gap:8px;padding:10px 14px;padding-top:calc(10px + env(safe-area-inset-top));background:var(--surface);border-bottom:1px solid var(--line)}.app-header .title{display:flex;flex-direction:column;line-height:1.2}.app-header .title b{font-size:15px;font-weight:700}.app-header .title span{font-size:12px;color:var(--ink-faint)}.header-actions{display:flex;align-items:center;gap:4px}.linkbtn{appearance:none;border:none;background:transparent;color:var(--link);font-family:inherit;font-size:13px;font-weight:600;padding:8px;min-height:40px;cursor:pointer;border-radius:8px}.linkbtn:active{background:color-mix(in srgb,var(--link) 12%,transparent)}.iconbtn{appearance:none;border:none;background:transparent;color:var(--ink-soft);font-size:20px;width:40px;height:40px;line-height:1;cursor:pointer;border-radius:8px}.legend{flex:0 0 auto;display:flex;gap:14px;align-items:center;flex-wrap:wrap;padding:9px 14px;background:var(--surface);border-bottom:1px solid var(--line);font-size:12px;color:var(--ink-soft)}.legend .key{display:flex;align-items:center;gap:5px}.swatch{width:16px;height:13px;border-radius:3px;flex:0 0 auto}.sw-pred{background:var(--pred-fill);border:1px dashed var(--pred-stroke);background-image:repeating-linear-gradient(45deg,transparent 0 4px,rgba(120,140,165,.3) 4px 6px)}.sw-fact{background:var(--fact-fill);border:1px solid var(--fact-stroke)}.grid-hint{font-size:11.5px;color:var(--ink-faint);padding:7px 14px 2px;background:var(--surface)}.newborn-banner{font-size:12px;color:#7a4d12;background:var(--tap-fill);border-bottom:1px solid var(--tap-stroke);padding:8px 14px;line-height:1.35}.grid-scroll{flex:1 1 auto;min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch;position:relative;background:var(--surface)}.timeline{position:relative;margin:8px 12px 8px 0}.hourlab{position:absolute;left:0;width:46px;text-align:right;padding-right:8px;font-size:11px;color:var(--ink-faint);font-variant-numeric:tabular-nums;transform:translateY(-7px)}.gline{position:absolute;left:50px;right:0;border-top:1px solid var(--line-soft)}.gline.hour{border-top-color:var(--line)}.empty-hint{position:absolute;inset:0 6px 0 54px;z-index:1;touch-action:pan-y}.blocks{position:absolute;inset:0 6px 0 54px;z-index:2;pointer-events:none}.block{pointer-events:auto}.block{position:absolute;left:0;right:0;border-radius:8px;touch-action:none;user-select:none;-webkit-user-select:none}.block .body{position:absolute;inset:0;border-radius:8px;padding:4px 9px;display:flex;flex-direction:column;justify-content:center;overflow:hidden}.block.pred .body{background:var(--pred-fill);border:1.5px dashed var(--pred-stroke);background-image:repeating-linear-gradient(45deg,transparent 0 6px,rgba(120,140,165,.22) 6px 9px)}.block.fact .body{background:var(--fact-fill);border:1.5px solid var(--fact-stroke)}.block.night .body{background:var(--night-fill);border:1.5px solid var(--night-stroke)}.block.corrected .body{box-shadow:0 0 0 2px var(--accent) inset}.blk-name{font-size:13px;font-weight:600;color:#0f1722;line-height:1.15}.blk-time{font-size:12px;color:#5b6675;font-variant-numeric:tabular-nums;line-height:1.2}.block.fact .blk-name{color:#1c6b48}.block.night .blk-name,.block.night .blk-time{color:#14315a}.notch{position:absolute;left:0;right:0;background:#fafdff;border-top:1px dashed var(--night-stroke);border-bottom:1px dashed var(--night-stroke);display:flex;align-items:center;justify-content:center;pointer-events:none}.notch span{font-size:10px;color:var(--night-stroke);font-variant-numeric:tabular-nums;white-space:nowrap}.handle{position:absolute;left:0;right:0;height:44px;display:flex;align-items:center;justify-content:center;cursor:ns-resize;touch-action:none;z-index:3}.handle.top{top:-22px}.handle.bot{bottom:-22px}.handle .bar{width:40px;height:5px;border-radius:3px;background:var(--ink-faint);opacity:.55;box-shadow:0 0 0 2px #ffffffb3}.block.fact .handle .bar{background:var(--fact-stroke);opacity:.9}.block.night .handle .bar{background:var(--night-stroke);opacity:.9}.handle:active .bar{opacity:1;transform:scaleX(1.1)}.block.past .body{opacity:.45;filter:grayscale(.5)}.block.past .blk-name,.block.past .blk-time{color:var(--ink-faint)}.past-tag{font-weight:400;font-size:11px;color:var(--ink-faint)}.now-line{position:absolute;left:50px;right:0;z-index:3;border-top:2px solid var(--destructive);pointer-events:none}.now-label{position:absolute;left:4px;top:-8px;font-size:10px;font-weight:600;color:var(--destructive);background:var(--surface);padding:0 4px;border-radius:3px;line-height:1.4}.now-empty{position:absolute;left:4px;right:8px;top:10px;font-size:12px;font-weight:500;color:var(--ink-soft);background:var(--surface);padding:6px 8px;border:1px dashed var(--line);border-radius:8px;line-height:1.35}.bottom-bar{flex:0 0 auto;padding:9px 14px calc(9px + env(safe-area-inset-bottom));background:var(--surface);border-top:1px solid var(--line)}.btn-primary{width:100%;min-height:50px;border:none;border-radius:12px;background:var(--accent);color:var(--accent-ink);font-size:16px;font-weight:600;font-family:inherit;cursor:pointer;box-shadow:0 2px 6px #2f81d647}.btn-primary:active{filter:brightness(.94)}.btn-primary:disabled{opacity:.55;cursor:default}.toast{position:absolute;left:50%;bottom:84px;transform:translate(-50%) translateY(12px);background:#323232;color:#fff;font-size:14px;padding:11px 18px;border-radius:22px;box-shadow:0 4px 16px #0000004d;opacity:0;pointer-events:none;transition:opacity .18s,transform .18s;max-width:90%;text-align:center;z-index:80}.toast.show{opacity:1;transform:translate(-50%) translateY(0)}.sheet-backdrop{position:absolute;inset:0;z-index:60;background:#0f172252;display:flex;align-items:flex-end}.sheet{width:100%;background:var(--surface);border-radius:16px 16px 0 0;padding:18px 16px calc(16px + env(safe-area-inset-bottom));box-shadow:0 -4px 20px #0003;animation:slideup .18s ease-out}@keyframes slideup{0%{transform:translateY(100%)}to{transform:translateY(0)}}.sheet p{margin:0 0 14px;text-align:center;font-size:16px;font-weight:600}.sheet-btns{display:flex;gap:10px}.sheet-btns button{flex:1;min-height:48px;border-radius:11px;border:1px solid var(--line);font-size:15px;font-weight:600;font-family:inherit;cursor:pointer;background:var(--surface);color:var(--ink)}.sheet-btns .del{background:#fdeaea;border-color:#f3c9c9;color:var(--destructive)}.sheet-btns .cancel{color:var(--ink-soft)}.sheet-btns:has(.add-nap),.sheet-btns:has(.add-wake){flex-direction:column}.sheet-btns .add-nap{background:var(--tap-fill);border-color:var(--tap-stroke);color:#7a4d12}.sheet-btns .add-wake{background:var(--night-fill);border-color:var(--night-stroke);color:#14315a}.cancel.wide{width:100%;min-height:46px;margin-top:10px;border:none;background:transparent;color:var(--ink-soft);font-size:15px;font-weight:600;font-family:inherit;cursor:pointer}.sheet.coach h3{margin:0 0 8px;font-size:17px;font-weight:700;text-align:center}.sheet.coach p{font-weight:400;font-size:14px;color:var(--ink-soft);line-height:1.45;margin-bottom:16px}.sheet.coach .btn-primary{min-height:46px}.legend-dir{margin-left:auto;font-size:11px;color:var(--ink-faint);white-space:nowrap}.modal-backdrop{position:absolute;inset:0;z-index:70;background:#0f17226b;display:flex;align-items:flex-end}.modal{width:100%;background:var(--surface);border-radius:18px 18px 0 0;padding:18px 16px calc(18px + env(safe-area-inset-bottom));box-shadow:0 -4px 24px #0000003d;animation:slideup .2s ease-out}.modal h3{margin:0 0 4px;font-size:17px;font-weight:700}.modal .modal-sub{margin:0 0 14px;font-size:14px;color:var(--ink-soft)}.modal textarea{width:100%;min-height:110px;resize:vertical;border:1px solid var(--line);border-radius:12px;padding:12px;font-family:inherit;font-size:15px;color:var(--ink);background:var(--bg);line-height:1.4}.modal textarea:focus{outline:2px solid var(--accent);outline-offset:-1px}.char-count{text-align:right;font-size:11px;color:var(--ink-faint);margin:4px 2px 0}.modal-error{margin:8px 2px 0;padding:8px 10px;font-size:13px;font-weight:500;color:var(--destructive);background:color-mix(in srgb,var(--destructive) 10%,transparent);border:1px solid color-mix(in srgb,var(--destructive) 30%,transparent);border-radius:8px}.modal-btns{display:flex;gap:10px;margin-top:14px}.modal-btns button{flex:1;min-height:48px;border-radius:12px;font-size:15px;font-weight:600;font-family:inherit;cursor:pointer}.modal-btns .cancel{background:var(--surface);border:1px solid var(--line);color:var(--ink-soft)}.modal-btns .submit{background:var(--accent);border:none;color:var(--accent-ink)}.modal-btns .submit:disabled{opacity:.55;cursor:default}.stars{display:flex;justify-content:center;gap:6px;margin:6px 0 4px}.star{appearance:none;border:none;background:transparent;font-size:38px;line-height:1;width:52px;height:56px;cursor:pointer;color:#d7c24a;filter:grayscale(1) opacity(.45);transition:filter .1s,transform .1s}.star.on{filter:none;transform:scale(1.06)}.star:active{transform:scale(.94)}.rating-hint{text-align:center;font-size:13px;color:var(--ink-faint);min-height:18px;margin:2px 0 8px}.filler{flex:1 1 auto;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:24px;text-align:center;color:var(--ink-soft)}.spinner{width:28px;height:28px;border:3px solid var(--line);border-top-color:var(--accent);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.retry{appearance:none;border:1px solid var(--line);background:var(--surface);color:var(--accent);font-family:inherit;font-size:14px;font-weight:600;padding:10px 18px;border-radius:10px;cursor:pointer}.mock-badge{font-size:10px;font-weight:700;letter-spacing:.4px;color:var(--accent-ink);background:var(--accent);border-radius:6px;padding:2px 6px;text-transform:uppercase}
