@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-sans-latin-400-normal-CDDApCn2.woff2) format("woff2"),url(/assets/ibm-plex-sans-latin-400-normal-CYLoc0-x.woff) format("woff")}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-sans-latin-500-normal-6ng42L7E.woff2) format("woff2"),url(/assets/ibm-plex-sans-latin-500-normal-BgVn5rGT.woff) format("woff")}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-sans-latin-600-normal-CuJfVYMP.woff2) format("woff2"),url(/assets/ibm-plex-sans-latin-600-normal-Cu4Hd6ag.woff) format("woff")}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-sans-latin-ext-400-normal-C5H60-Va.woff2) format("woff2"),url(/assets/ibm-plex-sans-latin-ext-400-normal-RBey6euL.woff) format("woff")}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-sans-latin-ext-500-normal-DakdToA3.woff2) format("woff2"),url(/assets/ibm-plex-sans-latin-ext-500-normal-D0aIdm-b.woff) format("woff")}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-sans-latin-ext-600-normal-DOrvGEcy.woff2) format("woff2"),url(/assets/ibm-plex-sans-latin-ext-600-normal-DIrixKbi.woff) format("woff")}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-latin-400-normal-DMJ8VG8y.woff2) format("woff2"),url(/assets/ibm-plex-mono-latin-400-normal-CvHOgSBP.woff) format("woff")}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-mono-latin-500-normal-DSY6xOcd.woff2) format("woff2"),url(/assets/ibm-plex-mono-latin-500-normal-CB9ihrfo.woff) format("woff")}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-latin-ext-400-normal-BmRBH3aV.woff2) format("woff2"),url(/assets/ibm-plex-mono-latin-ext-400-normal-D3D2R8hC.woff) format("woff")}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-mono-latin-ext-500-normal-CAhNIIs5.woff2) format("woff2"),url(/assets/ibm-plex-mono-latin-ext-500-normal-CZ70TYgx.woff) format("woff")}:root{--ink: #1b2230;--ink-soft: #586273;--surface: rgba(245, 246, 249, .93);--surface-solid: #f5f6f9;--surface-2: #e7eaf0;--field: #ffffff;--line: #cfd4dd;--sun: #8f5200;--sun-mark: #b56a00;--sun-fill: #f0a41a;--shade: #2f4a78;--night: #3a4664;--page: #dfe4ea;--danger: #a8322a;--primary-bg: #1b2230;--primary-fg: #ffffff;--shadow: 0 6px 24px rgba(10, 20, 40, .14);--scrim: rgba(20, 26, 38, .46);--font-body: "IBM Plex Sans", "Segoe UI", "Noto Sans", system-ui, sans-serif;--font-num: "IBM Plex Mono", ui-monospace, "SF Mono", Menlo, Consolas, monospace;--r: 10px;--r-ctl: 8px;--inset: 12px}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){color-scheme:dark;--ink: #e8ebf1;--ink-soft: #9da8b9;--surface: rgba(19, 24, 33, .92);--surface-solid: #131821;--surface-2: #232b39;--field: #1a202b;--line: #323c4e;--sun: #f5b53a;--sun-mark: #f5b53a;--sun-fill: #f5b53a;--shade: #93b3ea;--night: #0f1524;--page: #0d1118;--danger: #ff8d82;--primary-bg: #e8ebf1;--primary-fg: #131821;--shadow: 0 6px 24px rgba(0, 0, 0, .45);--scrim: rgba(0, 0, 0, .55)}}:root[data-theme=dark]{color-scheme:dark;--ink: #e8ebf1;--ink-soft: #9da8b9;--surface: rgba(19, 24, 33, .92);--surface-solid: #131821;--surface-2: #232b39;--field: #1a202b;--line: #323c4e;--sun: #f5b53a;--sun-mark: #f5b53a;--sun-fill: #f5b53a;--shade: #93b3ea;--night: #0f1524;--page: #0d1118;--danger: #ff8d82;--primary-bg: #e8ebf1;--primary-fg: #131821;--shadow: 0 6px 24px rgba(0, 0, 0, .45);--scrim: rgba(0, 0, 0, .55)}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--page);color:var(--ink);font:13px/18px var(--font-body);overflow:hidden;-webkit-font-smoothing:antialiased;overscroll-behavior:none}button,select,input{font:inherit;color:inherit}button{cursor:pointer}:focus-visible{outline:2px solid var(--shade);outline-offset:2px}.num{font-family:var(--font-num);font-variant-numeric:tabular-nums}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.app{position:relative;height:100%;width:100%;overflow:hidden}.map{position:absolute;inset:0;width:100%;height:100%;display:block;touch-action:none;outline:none}.app[data-mode=analysis] .map,.app[data-mode=building] .map{cursor:crosshair}.panel{position:absolute;background:var(--surface);border:1px solid var(--line);border-radius:var(--r);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);box-shadow:var(--shadow)}.panel h2{font:600 14px/20px var(--font-body);margin:0;text-wrap:balance}.muted{color:var(--ink-soft)}.small{font-size:12px;line-height:16px}.btn{height:36px;padding:0 12px;border-radius:var(--r-ctl);border:1px solid var(--line);background:var(--field);display:inline-flex;align-items:center;justify-content:center;gap:6px;white-space:nowrap}.btn:hover{border-color:var(--ink-soft)}.btn:disabled{opacity:.5;cursor:default}.btn.primary{background:var(--primary-bg);color:var(--primary-fg);border-color:var(--primary-bg);height:40px;font-weight:500}.btn.small{height:32px;padding:0 10px;font-size:12px}.btn.ghost{background:transparent}.btn.danger{color:var(--danger)}.icon-btn{width:36px;height:36px;padding:0;border-radius:var(--r-ctl);border:1px solid transparent;background:transparent;display:inline-grid;place-items:center}.icon-btn:hover{background:var(--surface-2)}.chip{height:28px;padding:0 10px;border-radius:999px;border:1px solid var(--line);background:var(--field);font-size:12px;white-space:nowrap;flex:none}.chip:hover{border-color:var(--ink-soft)}.chip[aria-pressed=true]{background:var(--primary-bg);color:var(--primary-fg);border-color:var(--primary-bg)}.search{top:var(--inset);left:var(--inset);width:400px;padding:12px;display:flex;flex-direction:column;gap:8px;z-index:6}.search-head{display:flex;align-items:center;gap:10px}.brand{font:600 16px/22px var(--font-body);letter-spacing:.01em}.brand-mark{width:22px;height:22px;flex:none}.search-row{display:flex;gap:6px;flex:1;min-width:0}.search-input{flex:1;min-width:0;height:36px;border-radius:var(--r-ctl);border:1px solid var(--line);background:var(--field);padding:0 10px}.search-input::placeholder{color:var(--ink-soft)}.place-chip{align-self:flex-start;max-width:100%;height:28px;padding:0 10px;border-radius:999px;background:var(--surface-2);display:inline-flex;align-items:center;gap:6px;font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.results{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;max-height:280px;overflow:auto;border-top:1px solid var(--line)}.results button{width:100%;text-align:left;background:transparent;border:0;padding:8px 4px;display:flex;flex-direction:column;border-bottom:1px solid var(--line)}.results li:last-child button{border-bottom:0}.results button:hover,.results button:focus-visible{background:var(--surface-2)}.results .detail{color:var(--ink-soft);font-size:12px;line-height:16px}.rail{top:112px;left:var(--inset);width:72px;padding:6px;display:flex;flex-direction:column;gap:4px;z-index:5}.rail button{height:56px;border-radius:var(--r-ctl);border:0;background:transparent;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;font-size:12px;line-height:14px}.rail button:hover{background:var(--surface-2)}.rail button[aria-selected=true]{background:var(--primary-bg);color:var(--primary-fg)}.side{top:112px;left:96px;width:320px;max-height:calc(100% - 302px);overflow:auto;padding:16px;display:flex;flex-direction:column;gap:14px;z-index:5}.side p{margin:0}.field-label{font-size:12px;line-height:16px;color:var(--ink-soft);margin-bottom:6px;display:block}.segmented{display:flex;background:var(--surface-2);border-radius:var(--r-ctl);padding:3px;gap:3px}.segmented button{flex:1;height:30px;border:0;background:transparent;border-radius:6px;font-size:12px}.segmented button[aria-pressed=true]{background:var(--field);box-shadow:0 1px 2px #0a14282e;font-weight:500}.row{display:flex;gap:8px;align-items:center}.row.wrap{flex-wrap:wrap}.grow{flex:1;min-width:0}.progress{height:6px;border-radius:3px;background:var(--surface-2);overflow:hidden}.progress>i{display:block;height:100%;background:var(--sun-fill);transition:width .15s linear}.legend{display:flex;flex-direction:column;gap:4px}.legend-bar{height:10px;border-radius:5px}.legend-ticks{display:flex;justify-content:space-between;font-size:11px;color:var(--ink-soft)}.stat-list{display:grid;grid-template-columns:1fr auto;row-gap:6px;column-gap:12px;margin:0}.stat-list dt{color:var(--ink-soft)}.stat-list dd{margin:0;text-align:right;font-weight:500}.big-num{font:500 22px/28px var(--font-num);font-variant-numeric:tabular-nums}input[type=range]{-webkit-appearance:none;appearance:none;width:100%;height:18px;background:transparent;margin:0}input[type=range]::-webkit-slider-runnable-track{height:4px;border-radius:2px;background:var(--line)}input[type=range]::-moz-range-track{height:4px;border-radius:2px;background:var(--line)}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:14px;height:14px;border-radius:50%;background:var(--ink);border:2px solid var(--surface-solid);margin-top:-5px}input[type=range]::-moz-range-thumb{width:14px;height:14px;border-radius:50%;background:var(--ink);border:2px solid var(--surface-solid)}.stepper{display:inline-flex;align-items:center;border:1px solid var(--line);border-radius:var(--r-ctl);background:var(--field);height:32px}.stepper button{width:30px;height:30px;border:0;background:transparent;font-size:16px}.stepper span{min-width:52px;text-align:center}.right-col{position:absolute;top:var(--inset);right:var(--inset);bottom:232px;width:304px;display:flex;flex-direction:column;align-items:flex-end;gap:12px;z-index:5;pointer-events:none}.right-col>*{pointer-events:auto}.sun{position:relative;width:272px;padding:12px 14px;flex:none}.sun-head{display:flex;align-items:center;justify-content:space-between;padding-bottom:8px;border-bottom:1px solid var(--line);margin-bottom:6px}.clock{font:500 28px/34px var(--font-num);font-variant-numeric:tabular-nums}.pill{height:24px;padding:0 10px;border-radius:999px;display:inline-flex;align-items:center;font-size:12px;font-weight:600}.pill[data-phase=day]{background:var(--sun-fill);color:#3a2400}.pill[data-phase=twilight]{background:#c97b5a;color:#fff}.pill[data-phase=night]{background:var(--night);color:#e8ebf1}.readout{display:flex;flex-direction:column;margin:0}.readout div{display:flex;align-items:center;justify-content:space-between;gap:10px;height:24px}.readout dt,.readout dd{margin:0;white-space:nowrap}.readout dt{color:var(--ink-soft)}.readout dd{font:500 13px/18px var(--font-num);font-variant-numeric:tabular-nums}.report{position:relative;width:304px;padding:14px 16px;display:flex;flex-direction:column;gap:12px;flex:0 1 auto;min-height:0;overflow:auto}.report-head{display:flex;align-items:flex-start;justify-content:space-between;gap:8px}.metrics{display:grid;grid-template-columns:1fr 1fr;gap:12px}.metric .v{font:500 18px/24px var(--font-num);font-variant-numeric:tabular-nums}.metric .l{font-size:12px;line-height:16px;color:var(--ink-soft)}.bars{display:grid;grid-template-columns:repeat(12,1fr);gap:3px;align-items:end;height:56px}.bars i{display:block;background:var(--sun-fill);border-radius:2px 2px 0 0;min-height:2px}.bars-x{display:grid;grid-template-columns:repeat(12,1fr);gap:3px;font-size:10px;line-height:12px;color:var(--ink-soft);text-align:center}.daybar{position:relative;height:10px;border-radius:5px;background:var(--night);overflow:hidden}.daybar i{position:absolute;top:0;bottom:0;background:var(--sun-fill)}.map-buttons{position:absolute;right:var(--inset);bottom:180px;display:flex;gap:8px;z-index:4}.map-buttons .btn{height:40px;background:var(--surface);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);box-shadow:var(--shadow)}.attribution{position:absolute;right:var(--inset);bottom:8px;height:20px;padding:0 8px;border-radius:999px;background:var(--surface);font-size:11.5px;line-height:20px;color:var(--ink-soft);z-index:3;max-width:calc(100% - 24px);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.attribution a{color:inherit;text-decoration:none}.attribution a:hover{text-decoration:underline}.loading{position:absolute;left:50%;top:14px;transform:translate(-50%);height:28px;padding:0 12px;border-radius:999px;background:var(--surface);border:1px solid var(--line);display:inline-flex;align-items:center;gap:8px;font-size:12px;z-index:4;box-shadow:var(--shadow)}.spinner{width:12px;height:12px;border-radius:50%;border:2px solid var(--line);border-top-color:var(--sun-fill);animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.toasts{position:absolute;left:50%;bottom:190px;transform:translate(-50%);display:flex;flex-direction:column;gap:8px;z-index:9;width:min(440px,calc(100% - 24px))}.toast{background:var(--surface-solid);border:1px solid var(--line);border-left:4px solid var(--shade);border-radius:var(--r-ctl);box-shadow:var(--shadow);padding:10px 12px;display:flex;align-items:center;gap:10px}.toast[data-kind=error]{border-left-color:var(--danger)}.fatal{position:absolute;inset:0;display:grid;place-items:center;padding:24px;text-align:center;font-size:15px;line-height:22px}.timebar{left:var(--inset);right:var(--inset);bottom:34px;padding:12px 16px;display:grid;grid-template-columns:auto minmax(0,1.5fr) minmax(0,1fr);gap:20px;align-items:center;z-index:5}.play{width:48px;height:48px;border-radius:50%;border:0;background:var(--primary-bg);color:var(--primary-fg);display:grid;place-items:center}.tb-head{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:4px}.tb-head .l{font-size:12px;color:var(--ink-soft)}.tb-head .v{font:600 16px/22px var(--font-num);font-variant-numeric:tabular-nums}.track{position:relative;height:26px}.track .rail-bg{position:absolute;left:0;right:0;top:9px;height:8px;border-radius:4px;background:var(--night);overflow:hidden}.track .rail-bg i{position:absolute;top:0;bottom:0;background:var(--sun-fill)}.track input[type=range]{position:absolute;inset:0;height:26px}.track input[type=range]::-webkit-slider-runnable-track{height:8px;background:transparent}.track input[type=range]::-moz-range-track{height:8px;background:transparent}.track input[type=range]::-webkit-slider-thumb{width:18px;height:18px;margin-top:-5px;background:var(--ink);border:3px solid var(--surface-solid);box-shadow:0 1px 3px #0a142859}.track input[type=range]::-moz-range-thumb{width:18px;height:18px;background:var(--ink);border:3px solid var(--surface-solid)}.ticks{display:flex;justify-content:space-between;font:11px/14px var(--font-num);color:var(--ink-soft)}.sunmarks{position:relative;height:14px;font:11px/14px var(--font-num);color:var(--sun)}.sunmarks span{position:absolute;transform:translate(-50%);white-space:nowrap}.tb-date{display:flex;flex-direction:column;gap:6px;min-width:0}.date-row{display:flex;gap:8px;align-items:center}.date-input{height:32px;border-radius:var(--r-ctl);border:1px solid var(--line);background:var(--field);padding:0 8px;font-family:var(--font-num);min-width:0}.chips{display:flex;gap:6px;overflow-x:auto;scrollbar-width:none}.chips::-webkit-scrollbar{display:none}.speed{height:28px;border-radius:999px;border:1px solid var(--line);background:var(--field);padding:0 8px;font-size:12px}.scrim{position:absolute;inset:0;background:var(--scrim);display:grid;place-items:center;z-index:20;padding:16px}.dialog{width:min(520px,100%);background:var(--surface-solid);border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow);padding:20px;display:flex;flex-direction:column;gap:14px;max-height:100%;overflow:auto}.dialog h2{font:600 18px/24px var(--font-body);margin:0}.dialog-head{display:flex;align-items:center;justify-content:space-between}.copy-row{display:flex;gap:8px}.copy-row input{flex:1;min-width:0;height:40px;border-radius:var(--r-ctl);border:1px solid var(--line);background:var(--field);padding:0 10px;font:12px/16px var(--font-num)}.code{background:var(--surface-2);border-radius:var(--r-ctl);padding:10px;font:12px/16px var(--font-num);overflow-x:auto;white-space:pre;color:var(--ink-soft)}.legal{margin:0;line-height:1.5}.popover{position:absolute;right:var(--inset);bottom:228px;width:264px;padding:14px;display:flex;flex-direction:column;gap:12px;z-index:8}@media(max-width:760px){.app{--safe-top: env(safe-area-inset-top, 0px);--safe-bottom: env(safe-area-inset-bottom, 0px);--stack: calc(286px + var(--safe-bottom))}.search{left:8px;right:8px;top:calc(8px + var(--safe-top));width:auto;padding:8px;border-radius:12px}.search-head{gap:8px}.brand span{display:none}.right-col{top:calc(68px + var(--safe-top));left:8px;right:8px;bottom:var(--stack);width:auto;align-items:stretch;justify-content:space-between}.sun{width:auto;padding:6px 10px}.sun-head{padding-bottom:0;border-bottom:0;margin-bottom:0}.clock{font-size:24px;line-height:30px}.readout{flex-direction:row;gap:14px;overflow-x:auto;scrollbar-width:none;margin-top:2px}.readout::-webkit-scrollbar{display:none}.readout div{gap:6px;flex:none}.readout .extra{display:none}.rail{top:auto;bottom:calc(8px + var(--safe-bottom));left:8px;right:8px;width:auto;flex-direction:row;padding:4px}.rail button{flex:1;height:44px;flex-direction:row;gap:8px;font-size:13px}.timebar{left:8px;right:8px;bottom:calc(68px + var(--safe-bottom));grid-template-columns:auto minmax(0,1fr);gap:10px 12px;padding:10px 12px}.tb-date{grid-column:1 / -1}.play{width:44px;height:44px}.side{top:auto;left:8px;right:8px;width:auto;bottom:var(--stack);max-height:38%;border-radius:16px;padding:12px 16px 16px}.report{width:auto;max-height:62%;border-radius:16px;padding:12px 16px 16px}.app[data-report=open] .side{display:none}.map-buttons{bottom:var(--stack);right:8px}.app[data-panel=open] .map-buttons,.attribution{display:none}.toasts{bottom:calc(var(--stack) + 8px)}.popover{right:8px;left:8px;width:auto;bottom:calc(var(--stack) + 52px)}.track input[type=range]::-webkit-slider-thumb{width:24px;height:24px;margin-top:-8px}.track input[type=range]::-moz-range-thumb{width:24px;height:24px}.btn{height:44px}.btn.small{height:36px}}@media(prefers-reduced-motion:reduce){.spinner{animation-duration:2.4s}.progress>i{transition:none}}.ph{--tabs: 64px;--safe-t: env(safe-area-inset-top, 0px);--safe-b: env(safe-area-inset-bottom, 0px);position:absolute;inset:0;pointer-events:none;font:15px/20px var(--font-body);color:var(--ink)}.ph>*{pointer-events:auto}.ph h1{font:600 22px/28px var(--font-body);margin:0;text-wrap:balance}.ph h2{font:600 18px/24px var(--font-body);margin:0;text-wrap:balance}.ph .grow{flex:1 1 0;min-width:0}.ph button,.ph a{-webkit-tap-highlight-color:transparent}.ph-sub{font-size:13px;line-height:18px;color:var(--ink-soft);margin:0}.ph-sub.row{display:flex;align-items:center;gap:8px}.ph-label{display:block;font-size:13px;line-height:18px;color:var(--ink-soft)}.ph-caption{font-size:12px;font-weight:600;letter-spacing:.6px;text-transform:uppercase;color:var(--ink-soft)}.ph-error{font-size:13px;color:var(--danger)}.ph-center{text-align:center}.ph-group{display:flex;flex-direction:column;gap:6px}.ph-top{position:absolute;left:12px;right:12px;top:calc(12px + var(--safe-t));display:flex;flex-direction:column;gap:10px;pointer-events:none}.ph-top>*{pointer-events:auto}.ph-search{height:52px;padding:0 4px 0 12px;display:flex;align-items:center;gap:10px;background:var(--surface);border:1px solid var(--line);border-radius:12px;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);box-shadow:var(--shadow)}.ph-search .brand-mark,.ph-brand .brand-mark{width:24px;height:24px;flex:none}.ph-search-open{flex:1 1 0;min-width:0;height:44px;padding:0;border:0;background:transparent;text-align:left;font-size:15px;color:var(--ink-soft);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ph-icon{flex:none;width:44px;height:44px;padding:0;display:inline-flex;align-items:center;justify-content:center;background:transparent;border:0;border-radius:10px;color:var(--ink)}.ph-icon svg{width:20px;height:20px}.ph-topchips{display:flex;gap:6px;padding:0;border:0;background:transparent;overflow:hidden;max-width:100%}.ph-topchips span{flex:none;height:32px;padding:0 10px;display:inline-flex;align-items:center;gap:6px;background:var(--surface);border:1px solid var(--line);border-radius:999px;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);box-shadow:0 2px 8px #0a14281f}.ph-topchips small{font-size:12px;color:var(--ink-soft)}.ph-topchips b{font-size:13px;font-weight:500;color:var(--ink);white-space:nowrap}.ph-topchips span:first-child b{font-size:14px;font-weight:600}.ph-legend{height:36px;padding:0 12px;display:flex;align-items:center;gap:8px;background:var(--surface);border:1px solid var(--line);border-radius:10px;box-shadow:var(--shadow);font-size:13px}.ph-legend i{flex:1 1 0;height:10px;border-radius:3px}.ph-loading{align-self:center;height:32px;padding:0 12px;display:inline-flex;align-items:center;gap:8px;font-size:13px;background:var(--surface);border:1px solid var(--line);border-radius:999px;box-shadow:var(--shadow)}.ph-bottom{position:absolute;left:0;right:0;bottom:calc(var(--tabs) + var(--safe-b));display:flex;flex-direction:column;align-items:stretch;gap:12px;max-height:calc(100% - var(--tabs) - var(--safe-b) - var(--safe-t) - 120px);pointer-events:none}.ph-bottom>*{pointer-events:auto}.ph-floats{align-self:flex-end;margin-right:12px;display:flex;flex-direction:column;gap:8px;flex:none}.ph-floats button{width:44px;height:44px;padding:0;display:flex;align-items:center;justify-content:center;color:var(--ink);background:var(--surface);border:1px solid var(--line);border-radius:10px;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);box-shadow:var(--shadow)}.ph-floats button svg{width:20px;height:20px}.ph-floats button.primary{background:var(--primary-bg);color:var(--primary-fg);border-color:var(--primary-bg)}.ph-sheet{min-height:0;overflow-y:auto;padding:8px 16px 16px;display:flex;flex-direction:column;gap:12px;background:var(--surface);border-top:1px solid var(--line);border-radius:16px 16px 0 0;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);box-shadow:0 -6px 24px #0a142829}.ph-handle{flex:none;align-self:center;width:36px;height:4px;border-radius:2px;background:var(--line)}.ph-head{display:flex;align-items:flex-start;gap:8px}.ph-head .ph-icon{margin:-8px -10px 0 0}.ph-head.flat .ph-icon{margin-top:-10px}.ph-play-row{display:flex;align-items:center;gap:12px}.ph-play{flex:none;width:48px;height:48px;padding:0;display:flex;align-items:center;justify-content:center;border-radius:50%;border:0;background:var(--primary-bg);color:var(--primary-fg)}.ph-play svg{width:20px;height:20px}.ph-clock{flex:1 1 0;min-width:0;display:flex;flex-direction:column;align-items:flex-start;padding:0;border:0;background:transparent;text-align:left}.ph-clock .ph-sub{font-size:12px;line-height:16px}.ph-time{font-size:24px;line-height:30px;font-weight:500}.ph-pill{flex:none;height:26px;padding:0 10px;display:inline-flex;align-items:center;border-radius:999px;font-size:12px;font-weight:600;background:var(--surface-2);color:var(--ink)}.ph-pill[data-phase=day]{background:#f0a41a;color:#1b2230}.ph-day{display:flex;flex-direction:column;gap:4px}.ph-marks{position:relative;height:18px}.ph-marks span{position:absolute;transform:translate(-50%);display:inline-flex;align-items:center;gap:4px;font:11.5px/18px var(--font-num);color:var(--sun);white-space:nowrap}.ph-track{position:relative;height:24px;display:flex;align-items:center}.ph-rail{position:absolute;left:0;right:0;height:8px;border-radius:4px;background:var(--night);overflow:hidden}.ph-rail i{position:absolute;top:0;bottom:0;background:var(--sun-fill)}.ph-track input{position:relative;width:100%;height:24px;margin:0;background:transparent;-webkit-appearance:none;appearance:none}.ph-track input::-webkit-slider-runnable-track{height:24px;background:transparent}.ph-track input::-webkit-slider-thumb{-webkit-appearance:none;width:24px;height:24px;border-radius:50%;background:var(--primary-bg);border:3px solid var(--surface-solid);box-shadow:0 1px 4px #0a142859}.ph-track input::-moz-range-thumb{width:18px;height:18px;border-radius:50%;background:var(--primary-bg);border:3px solid var(--surface-solid)}.ph-track.plain:before{content:"";position:absolute;left:0;right:0;height:6px;border-radius:3px;background:var(--surface-2)}.ph-ticks{display:flex;justify-content:space-between;font:11.5px/14px var(--font-num);color:var(--ink-soft)}.ph-btn{height:44px;padding:0 14px;display:inline-flex;align-items:center;justify-content:center;gap:8px;background:var(--field);border:1px solid var(--line);border-radius:10px;color:var(--ink);font:600 15px/20px var(--font-body);text-decoration:none;white-space:nowrap}.ph-btn svg{width:18px;height:18px;flex:none}.ph-btn.num{font-family:var(--font-num);font-weight:500;font-size:14px}.ph-btn.primary{background:var(--primary-bg);border-color:var(--primary-bg);color:var(--primary-fg)}.ph-btn.danger{color:var(--danger)}.ph-btn.small{font-size:13px;padding:0 6px}.ph-btn.wide{width:100%;flex:none}.ph-actions .ph-btn.wide{flex:1 1 0;min-width:0;width:auto}.ph-btn.off,.ph-btn:disabled{opacity:.45;pointer-events:none}.ph-stepper{display:flex;gap:8px}.ph-stepper .ph-btn:not(.grow){width:44px;padding:0;flex:none}.ph-actions{display:flex;gap:8px}.ph-text{flex:none;height:44px;padding:0 8px;border:0;background:transparent;color:var(--shade);font:600 15px/20px var(--font-body)}.ph-link-row{height:44px;padding:0;display:flex;align-items:center;justify-content:space-between;border:0;background:transparent;font-size:15px;font-weight:500}.ph-link-row svg{width:16px;height:16px;vertical-align:-3px}.ph-modes{flex:none;display:flex;gap:4px;padding:4px;background:var(--surface-2);border-radius:10px}.ph-modes button{flex:1 1 0;min-width:0;height:44px;display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:0;border:0;border-radius:8px;background:transparent;color:var(--ink-soft);font:500 14px/20px var(--font-body)}.ph-modes button svg{width:18px;height:18px;flex:none}.ph-modes button[aria-selected=true]{background:var(--primary-bg);color:var(--primary-fg);font-weight:600}.ph-seg{display:flex;gap:2px;padding:4px;background:var(--surface-2);border-radius:10px}.ph-seg button{flex:1 1 0;min-width:0;height:36px;padding:0 4px;border:0;border-radius:8px;background:transparent;color:var(--ink-soft);font:500 14px/20px var(--font-body);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ph-seg button[aria-pressed=true]{background:var(--field);color:var(--ink);font-weight:600;box-shadow:0 1px 3px #0a142824}.ph-chips{display:flex;gap:6px;overflow-x:auto;scrollbar-width:none}.ph-chips::-webkit-scrollbar{display:none}.ph-chips.wrap{flex-wrap:wrap;overflow:visible}.ph-chip{flex:none;height:36px;padding:0 12px;border:1px solid var(--line);border-radius:999px;background:var(--field);font:500 13px/18px var(--font-body)}.ph-chip[aria-pressed=true]{background:var(--primary-bg);border-color:var(--primary-bg);color:var(--primary-fg)}.ph-metrics{display:grid;grid-template-columns:1fr 1fr;gap:12px}.ph-metrics div{display:flex;flex-direction:column;gap:2px;min-width:0}.ph-metrics span{font-size:13px;line-height:18px;color:var(--ink-soft)}.ph-metrics b{font-size:18px;line-height:24px;font-weight:500}.ph-metrics b small{font-size:12px;color:var(--ink-soft)}.ph-metrics.big b{font-size:26px;line-height:32px}.ph-split{display:flex;align-items:baseline;justify-content:space-between;gap:12px}.ph-split b{font-weight:500;text-align:right}.ph-progress{height:8px;border-radius:4px;background:var(--surface-2);overflow:hidden}.ph-progress i{display:block;height:100%;background:var(--sun-fill)}.ph-bars{display:flex;align-items:flex-end;gap:4px;height:56px}.ph-bars i{flex:1 1 0;background:var(--sun-fill);border-radius:2px 2px 0 0;min-height:2px}.ph-bars i[data-peak]{background:var(--sun-mark)}.ph-bars-x{display:flex;gap:4px;margin-top:4px}.ph-bars-x span{flex:1 1 0;text-align:center;font:11px/14px var(--font-num);color:var(--ink-soft)}.ph-daybar{position:relative;height:10px;border-radius:5px;background:var(--night);overflow:hidden}.ph-daybar i{position:absolute;top:0;bottom:0;background:var(--sun-fill)}.ph-height{display:flex;align-items:center;gap:8px}.ph-height b{font-size:30px;line-height:36px;font-weight:500}.ph-height .ph-btn{width:44px;padding:0;font-size:20px;flex:none}.ph-tag{padding:2px 10px;border:1px solid var(--shade);border-radius:999px;color:var(--shade);font-size:12px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}.ph-tabs{position:absolute;left:0;right:0;bottom:0;height:calc(var(--tabs) + var(--safe-b));padding-bottom:var(--safe-b);display:flex;background:var(--surface-solid);border-top:1px solid var(--line);z-index:4}.ph-tabs button{position:relative;flex:1 1 0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;padding:0;border:0;background:transparent;color:var(--ink-soft);font:500 12px/16px var(--font-body)}.ph-tabs button svg{width:22px;height:22px}.ph-tabs button[aria-current=page]{color:var(--ink);font-weight:600}.ph-tabs button[aria-current=page]:before{content:"";position:absolute;top:-1px;left:50%;width:32px;height:3px;margin-left:-16px;border-radius:0 0 3px 3px;background:var(--sun-fill)}.ph-screen{position:absolute;inset:0;display:flex;flex-direction:column;background:var(--surface-solid);padding-top:var(--safe-t);z-index:5}.ph-screen[data-root]{bottom:calc(var(--tabs) + var(--safe-b));z-index:3}.ph-bar{flex:none;min-height:56px;padding:6px 8px;display:flex;align-items:center;gap:4px}.ph-bar h1{font-size:18px;line-height:24px}.ph-screen[data-root] .ph-bar{padding-left:16px}.ph-body{flex:1 1 0;min-height:0;overflow-y:auto;padding:4px 16px 16px;display:flex;flex-direction:column;gap:12px;-webkit-overflow-scrolling:touch}.ph-foot{flex:none;padding:12px 16px calc(12px + var(--safe-b));border-top:1px solid var(--line);display:flex;gap:8px}.ph-searchbar{flex:none;padding:12px 8px 8px 16px;display:flex;align-items:center;gap:4px}.ph-field{flex:1 1 0;min-width:0;height:48px;padding:0 4px 0 12px;display:flex;align-items:center;gap:8px;background:var(--field);border:2px solid var(--shade);border-radius:10px}.ph-field input{flex:1 1 0;min-width:0;height:44px;padding:0;border:0;outline:0;background:transparent;font-size:16px}.ph-field input::-webkit-search-cancel-button{display:none}.ph-list{flex:none;background:var(--field);border:1px solid var(--line);border-radius:12px;overflow:hidden}.ph-list>*+*{border-top:1px solid var(--line)}.ph-row{width:100%;min-height:56px;padding:8px 12px;display:flex;align-items:center;gap:12px;background:transparent;border:0;color:var(--ink);font:inherit;text-align:left;text-decoration:none}.ph-row-text{display:flex;flex-direction:column;min-width:0}.ph-row-title{font-weight:500}.ph-row-sub{font-size:13px;line-height:18px;color:var(--ink-soft)}.ph-row-value{flex:none;font-family:var(--font-num);font-size:14px;color:var(--ink-soft)}.ph-chev{flex:none;color:var(--ink-soft);display:inline-flex}.ph-chev svg{width:16px;height:16px}.ph-tile{flex:none;width:36px;height:36px;display:inline-flex;align-items:center;justify-content:center;background:var(--surface-2);border-radius:10px;color:var(--ink)}.ph-tile svg{width:20px;height:20px}.ph-tile.big{width:72px;height:72px;border-radius:18px}.ph-tile.big svg{width:32px;height:32px}.ph-tile.danger{color:var(--danger)}.ph-times{display:inline-flex;align-items:center;gap:4px;flex-wrap:wrap;color:var(--ink);font-size:13px}.ph-times svg{color:var(--sun)}.ph-num-step{flex:none;display:inline-flex;align-items:center;gap:8px}.ph-num-step .ph-btn{width:36px;height:36px;padding:0;font-size:18px}.ph-card{flex:none;padding:14px;display:flex;flex-direction:column;gap:10px;background:var(--field);border:1px solid var(--line);border-radius:12px}.ph-two{display:grid;grid-template-columns:1fr 1fr;gap:8px}.ph-table .ph-split{padding:6px 8px;border-radius:4px}.ph-table .ph-split:nth-child(odd){background:var(--surface-2)}.ph-note{flex:none;padding:12px;background:var(--surface-2);border-radius:12px;font-size:13px;line-height:19px;color:var(--ink)}.ph-guide{margin:0;padding:0 12px 12px 60px;font-size:13px;line-height:19px;color:var(--ink-soft);border-top:0!important}.ph-empty{flex:1 1 0;padding:0 16px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;text-align:center}.ph-input{width:100%;min-height:48px;padding:12px;background:var(--field);border:1px solid var(--line);border-radius:10px;font:16px/20px var(--font-body);color:var(--ink);resize:none}.ph-scrim{position:absolute;inset:0;display:flex;align-items:flex-end;background:var(--scrim);z-index:7}.ph-modal{width:100%;max-height:calc(100% - var(--safe-t) - 24px);overflow-y:auto;padding:8px 16px calc(16px + var(--safe-b));display:flex;flex-direction:column;gap:12px;background:var(--surface-solid);border-radius:20px 20px 0 0}.ph-switch{flex:none;position:relative;width:50px;height:30px;margin:0;border-radius:15px;background:var(--line);-webkit-appearance:none;appearance:none;transition:background .15s}.ph-switch:after{content:"";position:absolute;top:3px;left:3px;width:24px;height:24px;border-radius:50%;background:#fff;box-shadow:0 1px 3px #0a14284d;transition:left .15s}.ph-switch:checked{background:var(--shade)}.ph-switch:checked:after{left:23px}.ph-radio{flex:none;width:22px;height:22px;margin:0;accent-color:var(--shade)}.ph-copy{display:flex;gap:8px}.ph-copy input{flex:1 1 0;min-width:0;height:44px;padding:0 12px;background:var(--field);border:1px solid var(--line);border-radius:10px;font:13px var(--font-num);color:var(--ink)}.ph-month{display:flex;align-items:center;justify-content:space-between}.ph-month b{font-weight:600;text-transform:capitalize}.ph-month .ph-btn{width:44px;padding:0}.ph-cal{display:grid;grid-template-columns:repeat(7,1fr);gap:2px;text-align:center}.ph-cal span{padding:4px 0;text-transform:capitalize;font-size:12px}.ph-cal button{height:44px;padding:0;border:0;border-radius:10px;background:transparent;font-size:15px}.ph-cal button[aria-pressed=true]{background:var(--primary-bg);color:var(--primary-fg);font-weight:600}.ph-full{position:absolute;inset:0;padding:calc(12px + var(--safe-t)) 24px calc(24px + var(--safe-b));display:flex;flex-direction:column;gap:12px;background:var(--surface-solid);z-index:9}.ph-full .ph-sub{font-size:15px;line-height:23px}.ph-intro-head{flex:none;height:44px;display:flex;align-items:center;justify-content:space-between}.ph-brand{display:inline-flex;align-items:center;gap:10px;font-size:17px;font-weight:600}.ph-intro-img{flex:1 1 0;min-height:0;width:100%;object-fit:cover;object-position:center 62%;border-radius:16px;border:1px solid var(--line)}.ph-full>.ph-sub.grow{flex:0 0 auto;min-height:70px}.ph-intro-foot{flex:none;display:flex;align-items:center;justify-content:space-between}.ph-dots{display:inline-flex;gap:6px}.ph-dots i{width:8px;height:8px;border-radius:4px;background:var(--line)}.ph-dots i[data-on]{width:22px;background:var(--primary-bg)}.ph-location-body{display:flex;flex-direction:column;justify-content:center;gap:12px}.ph-checks{list-style:none;margin:8px 0 0;padding:0;display:flex;flex-direction:column;gap:10px;font-size:15px}.ph-checks li{display:flex;align-items:center;gap:10px}.ph-checks svg{flex:none;color:var(--shade)}.ph-float-card{margin:0 12px}.ph-center-card{position:absolute;left:12px;right:12px;top:26%;box-shadow:var(--shadow);z-index:2}.ph-toasts{position:absolute;left:12px;right:12px;top:calc(76px + var(--safe-t));display:flex;flex-direction:column;gap:8px;z-index:8;pointer-events:none}.ph-toasts>*{pointer-events:auto}
