:root{font-family:Segoe UI Variable Text,Segoe UI,system-ui,sans-serif;color:#15333d;background:#163742;font-synthesis:none;font-size:14px;line-height:1.4;--ui-meta-size:14px;--ui-meta-line:18px;--ui-weight-regular:400;--ui-weight-medium:500;--ui-weight-strong:600}*{box-sizing:border-box}body{margin:0}button,input,a{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer;min-height:44px}button,a,input{touch-action:manipulation}button:disabled{cursor:wait;opacity:.65}button:focus-visible,a:focus-visible,input:focus-visible,canvas:focus-visible{outline:3px solid #f5af48;outline-offset:3px}[hidden]{display:none!important}.sr-only{position:absolute!important;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.horizon{--accent:#d8edf0;--panel:#eff5f2f5;--muted:#4f6571;--line:#aebfc3;--day:#bca468;--twilight:#a38caa;--night:#304969}.app-screen{height:100vh;height:100dvh;position:relative;overflow:hidden}#harbour{position:absolute;inset:0;width:100%;height:100%;display:block;cursor:grab;touch-action:none}#harbour.dragging{cursor:grabbing}#harbour:focus-visible{outline-offset:-6px}.app-header{position:absolute;left:46px;right:38px;top:29px;display:flex;align-items:flex-start;justify-content:space-between;gap:24px;color:#fffaf0;text-shadow:0 1px 2px #04131f,0 0 1px #04131f;pointer-events:none}.app-header button{pointer-events:auto}.location-kicker{margin:0 0 5px;font-size:11px;letter-spacing:.2em;font-weight:600}.app-header h1{margin:0;font-weight:400;font-family:Georgia,Times New Roman,serif;font-size:58px;line-height:.91;letter-spacing:-.055em;max-width:300px}.app-header h1 span{display:block;font-style:italic;margin-top:4px}.header-right{display:flex;align-items:center;gap:20px}.demo-disclosure{text-align:right;display:flex;flex-direction:column;gap:0;font-size:var(--ui-meta-size);line-height:var(--ui-meta-line)}.demo-label{display:block;letter-spacing:.12em;font-size:11px;font-weight:700}.demo-dot{display:inline-block;width:6px;height:6px;border-radius:100%;background:#e6f4df;vertical-align:2px;margin-right:6px}.credits-button{border:1px solid #cad8d46b;color:#fff8ec;padding:0 17px;background:#102c3c99;border-radius:3px;text-shadow:none;font-size:var(--ui-meta-size);line-height:var(--ui-meta-line);font-weight:var(--ui-weight-medium)}.runtime-message{position:absolute;right:38px;top:87px;max-width:480px;color:#fffaf0;text-shadow:0 2px 8px #051725;pointer-events:none}.runtime-message p{margin:0}.runtime-message .error{padding:12px;background:#3f172bdd;white-space:normal}.runtime-message button{pointer-events:auto;margin-top:8px;padding:0 16px;border:1px solid #b4c5d2;border-radius:6px;background:#fff;color:#224058;font-size:var(--ui-meta-size);line-height:var(--ui-meta-line);font-weight:var(--ui-weight-medium)}.weather-icon{width:21px;height:21px;display:inline-block;vertical-align:middle;flex-shrink:0;stroke-width:1.5}.dock{--thumb-w:76px;--thumb-h:48px;--axis-inset:38px;--muted:#f6fbff;--day:#f1d892;--twilight:#dbc5f2;--night:#b3cdeb;--rain:#8fe5ff;position:absolute;left:20vw;right:auto;width:60vw;min-width:0;max-width:none;bottom:22px;height:184px;display:grid;grid-template-rows:62px 86px;row-gap:10px;padding:12px 16px;background:linear-gradient(145deg,#ffffff0a,#fff0 55%),#0c253bb8;border:1px solid rgba(227,244,255,.42);border-radius:17px;box-shadow:inset 0 1px #fff3,0 5px 16px #03111d1f;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);color:#f6fbff;font-size:var(--ui-meta-size);opacity:1}.dock :is(button,input):focus-visible{outline:3px solid #ffe3a6;outline-offset:3px}.dock-top{--condition-size:20px;--condition-line:24px;display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);gap:12px;align-items:center;min-width:0}.dock-readout{display:grid;grid-template-columns:136px minmax(0,1fr);gap:12px;align-items:center;min-width:0}.dock .clock{min-width:0;font-variant-numeric:tabular-nums}.dock .clock-value{display:block;font-size:40px;font-weight:var(--ui-weight-regular);letter-spacing:-.05em;line-height:40px}.dock .clock-date{display:block;font-size:var(--ui-meta-size);line-height:18px;margin-top:4px;white-space:nowrap}.dock .dock-condition{min-width:0;max-width:none;display:flex;gap:8px;align-items:center}.dock .dock-condition>span{flex:none}.dock .dock-condition svg{width:30px;height:30px;flex:none}.dock .condition-stack{min-width:0;flex:1}.dock .condition-value{font-family:inherit;font-size:var(--condition-size);line-height:var(--condition-line);font-weight:400;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.dock .temperature-line{display:flex;align-items:baseline;white-space:nowrap;line-height:24px}.dock .selected-temperature{font-family:inherit;font-size:20px;line-height:24px;font-weight:500;font-variant-numeric:tabular-nums}.dock .actions{display:grid;grid-template-columns:88px;justify-content:end;gap:8px;min-width:0}.dock .action-button{width:100%;min-width:0;border:1px solid #b8d7ea;background:#f6fbff0f;color:#f6fbff;border-radius:22px;min-height:44px;height:44px;padding:4px 10px;display:flex;align-items:center;justify-content:center;white-space:nowrap;font-size:var(--ui-meta-size);line-height:18px;font-weight:500}.dock .action-button:hover{background:#f6fbff14}.dock .action-button.primary{background:#e0f3ff;color:#0c253b;border-color:#f6fbff}.dock .action-button.play-button{width:144px;height:52px;min-height:52px;border-radius:26px;font-family:inherit;font-size:var(--condition-size);line-height:var(--condition-line);font-weight:400}.dock-bottom{display:grid;grid-template-columns:minmax(0,1fr);gap:0;min-width:0}.dock .rail{position:relative;height:86px;min-width:0}.dock .rail-axis{position:absolute;left:var(--axis-inset);right:var(--axis-inset);top:0;height:100%}.dock .phase-track{position:absolute;left:0;right:0;top:31px;height:10px;background:var(--night);border-radius:12px;overflow:hidden;box-shadow:0 0 0 1px #8c9fa580}.dock .phase-track span{position:absolute;top:0;bottom:0}.dock .phase-track .day{background:var(--day)}.dock .phase-track .twilight{background:var(--twilight)}.dock .phase-track .night{background:var(--night);background-image:repeating-linear-gradient(110deg,transparent,transparent 4px,rgba(12,37,59,.38) 4px,rgba(12,37,59,.38) 5px)}.dock .phase-track .coverage-gap{background:repeating-linear-gradient(45deg,#e0edf4,#e0edf4 2px,#627888 2px 4px)}.dock .rain-trace{position:absolute;left:0;top:21px;width:100%;height:8px;color:var(--rain);overflow:visible;pointer-events:none}.dock .time-input{position:absolute;left:0;top:10px;width:100%;height:52px;margin:0;padding:0;appearance:none;-webkit-appearance:none;background:transparent;border:0;cursor:ew-resize;z-index:2;border-radius:8px}.dock .time-input:focus-visible{outline-offset:0}.time-input::-webkit-slider-runnable-track{height:10px;background:transparent;border:0}.time-input::-moz-range-track{height:10px;background:transparent;border:0}.time-input::-webkit-slider-thumb{appearance:none;-webkit-appearance:none;box-sizing:border-box;width:var(--thumb-w);height:var(--thumb-h);margin-top:calc((10px - var(--thumb-h))/2);border:2px solid #153d4b;border-radius:26px;background:#dcecea url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='22' viewBox='0 0 24 22'%3E%3Cpath d='M5 4v14M12 4v14M19 4v14' fill='none' stroke='%23375965' stroke-width='2.5' stroke-linecap='round'/%3E%3C/svg%3E") center/24px 22px no-repeat;box-shadow:inset 0 2px #fff,0 3px 7px #143b4b40}.time-input::-moz-range-thumb{box-sizing:border-box;width:var(--thumb-w);height:var(--thumb-h);border:2px solid #153d4b;border-radius:26px;background:#dcecea url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='22' viewBox='0 0 24 22'%3E%3Cpath d='M5 4v14M12 4v14M19 4v14' fill='none' stroke='%23375965' stroke-width='2.5' stroke-linecap='round'/%3E%3C/svg%3E") center/24px 22px no-repeat;box-shadow:inset 0 2px #fff,0 3px 7px #143b4b40}.dock .time-input:active{cursor:grabbing}.dock .hour-markers{position:absolute;left:0;right:0;top:66px;font-size:var(--ui-meta-size);font-variant-numeric:tabular-nums}.dock .marker{position:absolute;transform:translate(-50%);text-align:center;white-space:nowrap}.dock .marker time{display:block;line-height:18px}.dock .marker.midnight time{font-weight:var(--ui-weight-strong)}.dock .marker.first{transform:none;text-align:left}.dock .marker.last{transform:translate(-100%);text-align:right}.dock :is(.clock-value,.clock-date,.condition-value,.selected-temperature,.hour-markers){color:#f6fbff;opacity:1;background:transparent;box-shadow:none;text-shadow:none;border-radius:0;padding:0}@media(max-width:1365px){.dock{padding-left:12px;padding-right:12px}.dock-top{--condition-size:16px;--condition-line:20px}.dock-readout{grid-template-columns:104px minmax(0,1fr);gap:8px}.dock .actions{grid-template-columns:76px;gap:8px}.dock .action-button{padding:4px 10px;font-size:var(--ui-meta-size)}.dock .clock-value{font-size:32px;line-height:32px}.dock .clock-date{font-size:var(--ui-meta-size);line-height:16px;margin-top:0}.dock .dock-condition svg{width:24px;height:24px}.dock .selected-temperature{font-size:20px;line-height:20px}.dock .temperature-line{line-height:20px}}@media(max-width:1100px){.dock{height:142px;bottom:12px;padding-top:8px;padding-bottom:8px;border-radius:12px;grid-template-rows:48px 72px;row-gap:4px}.dock .action-button.play-button{width:128px;height:48px;min-height:48px;border-radius:24px}.dock .rail{height:72px}.dock .time-input{top:0}.dock .phase-track{top:21px}.dock .rain-trace{top:11px}.dock .hour-markers{top:54px;font-size:var(--ui-meta-size)}}.forecast{position:absolute;left:46px;top:182px;width:288px;height:314px;padding:0;border:0;border-radius:0;background:transparent;backdrop-filter:none;-webkit-backdrop-filter:none;box-shadow:none;color:#f6fbff;opacity:1;pointer-events:auto;font-size:13px;line-height:18px}.forecast,.dock{font-family:Segoe UI Variable Text,Segoe UI,system-ui,-apple-system,BlinkMacSystemFont,sans-serif}.forecast-cards{position:absolute;left:0;right:0;top:0;margin:0;padding:0;list-style:none;display:grid;grid-template-rows:repeat(4,74px);gap:6px}.forecast-card{height:74px;min-width:0;padding:8px;border:1px solid rgba(227,244,255,.42);border-radius:14px;background:linear-gradient(145deg,#ffffff0a,#fff0 55%),#0c253bb8;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);box-shadow:inset 0 1px #fff3,0 5px 16px #03111d1f;opacity:1;color:#f6fbff}.forecast-card-heading{display:flex;align-items:baseline;justify-content:space-between;gap:8px;height:18px;line-height:18px;white-space:nowrap}.forecast-daypart{font-size:14px;font-weight:600}.forecast-card-body{display:grid;grid-template-columns:36px 86px minmax(0,1fr);gap:8px;height:36px;margin-top:2px;align-items:center}.forecast-icon{width:36px;height:36px;display:block}.forecast :is(.forecast-daypart,.forecast-temperature-run,.forecast-degrees,.forecast-unit,.forecast-condition){background:transparent;box-shadow:none;text-shadow:none;border-radius:0;padding:0;opacity:1;min-width:0}.forecast-temperature{min-width:0;font-variant-numeric:tabular-nums;white-space:nowrap}.forecast-temperature-run{display:inline-flex;align-items:baseline;line-height:32px}.forecast-degrees{font-size:28px;font-weight:500;line-height:32px}.forecast-unit{font-size:14px;font-weight:500;line-height:18px}.forecast-condition{font-size:24px;font-weight:400;line-height:30px;white-space:nowrap}.demo-disclosure{font-size:var(--ui-meta-size)}.demo-label{font-size:13px}dialog{max-width:620px;width:calc(100% - 48px);max-height:calc(100dvh - 80px);border:1px solid #bdcbd6;border-radius:16px;padding:26px 30px;background:#f7fafc;color:#253d52;box-shadow:0 26px 80px #05182a80;line-height:1.65}dialog::backdrop{background:#06182499;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px)}dialog h2{margin:12px 0;font-size:28px;letter-spacing:-.035em;font-weight:var(--ui-weight-strong)}dialog h3{font-size:var(--ui-meta-size);margin:19px 0 6px;font-weight:var(--ui-weight-strong)}dialog p{font-size:13px;margin:7px 0;white-space:pre-wrap}dialog a{color:#135b87;text-underline-offset:3px}dialog .dialog-heading{display:flex;align-items:center;justify-content:space-between;gap:12px}dialog .dialog-close{border:1px solid #b4c5d2;border-radius:6px;background:#fff;color:#224058;padding:0 17px;font-size:var(--ui-meta-size);line-height:var(--ui-meta-line);font-weight:var(--ui-weight-medium)}#weather-retry{border:1px solid #b4c5d2;border-radius:6px;background:#fff;color:#224058;padding:0 17px;font-size:var(--ui-meta-size);line-height:var(--ui-meta-line);font-weight:var(--ui-weight-medium)}dialog:focus-visible{outline:3px solid #f5af48;outline-offset:3px}@media(max-width:1100px){.app-header{left:30px;right:24px;top:22px}.app-header h1{font-size:42px}.header-right{gap:13px}.forecast{left:30px;top:146px;width:264px}.forecast-card{border-radius:12px}}@media(max-height:580px){.app-screen{min-height:580px;overflow:visible}body{overflow:auto}}@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important}}#weather-key-dialog{max-width:540px}#weather-key-form{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;margin:18px 0}#weather-key-form label{grid-column:1 / -1;font-weight:var(--ui-weight-medium)}#weather-key{min-width:0;width:100%;min-height:44px;padding:8px 12px;border:1px solid #b4c5d2;border-radius:6px;font:inherit}#weather-key-connect{padding:0 18px;border:1px solid #224058;border-radius:6px;color:#fff;background:#224058;font-size:var(--ui-meta-size);line-height:var(--ui-meta-line);font-weight:var(--ui-weight-medium)}#weather-key-message{overflow-wrap:anywhere}.music-toggle{width:116px;height:44px;min-height:44px;flex:0 0 116px;padding:0 10px;display:inline-flex;align-items:center;justify-content:center;gap:6px;white-space:nowrap;font-size:14px;line-height:18px;font-weight:500}.music-glyph{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;flex:0 0 16px}.music-glyph svg{width:16px;height:16px}#phone-scene-safe-area{display:none}@media(max-width:1023px){body.horizon{overflow:hidden}.horizon .app-screen{--phone-safe-t:env(safe-area-inset-top,0px);--phone-safe-r:env(safe-area-inset-right,0px);--phone-safe-b:env(safe-area-inset-bottom,0px);--phone-safe-l:env(safe-area-inset-left,0px);height:100vh;height:100dvh;min-height:0;overflow:hidden}.horizon #forecast{display:none}.horizon .app-header{left:calc(12px + var(--phone-safe-l));right:calc(12px + var(--phone-safe-r));top:calc(12px + var(--phone-safe-t));height:96px;gap:12px}.horizon #title-block{min-width:0;padding-bottom:4px}.horizon .location-kicker{font-size:11px;line-height:12px;letter-spacing:.07em;margin:0 0 4px;white-space:nowrap}.horizon .app-header h1{font-size:36px;line-height:1;max-width:none}.horizon .app-header h1 span{margin-top:4px}.horizon .header-right{gap:6px;flex:0 0 auto}.horizon .demo-disclosure{position:absolute!important;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.horizon #credits-toggle{width:74px;height:44px;padding:0 8px}.horizon #music-toggle{width:44px;min-width:44px;height:44px;flex:0 0 44px;padding:0;gap:0}.horizon #music-label{display:none}.horizon #music-glyph,.horizon #music-glyph svg{width:20px;height:20px}.horizon #music-glyph{flex-basis:20px}.horizon .dock{--thumb-w:60px!important;--thumb-h:44px!important;--axis-inset:30px!important;left:calc(12px + var(--phone-safe-l));right:calc(12px + var(--phone-safe-r));bottom:calc(8px + var(--phone-safe-b));width:auto;height:200px;padding:8px;grid-template-rows:110px 68px;row-gap:4px;border-radius:12px}.horizon .dock-top{--condition-size:15px;--condition-line:18px;grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:60px 44px;column-gap:8px;row-gap:6px}.horizon .dock-readout{grid-column:1 / -1;grid-row:1;grid-template-columns:104px minmax(0,1fr);gap:10px}.horizon .dock .clock-value{font-size:32px;line-height:32px}.horizon .dock .clock-date{font-size:13px;line-height:16px;margin-top:0}.horizon .dock .dock-condition{gap:8px}.horizon .dock .dock-condition svg{width:22px;height:22px}.horizon .dock .condition-value{white-space:normal;overflow:visible;text-overflow:clip;overflow-wrap:break-word}.horizon .dock .temperature-line,.horizon .dock .selected-temperature{font-size:20px;line-height:24px}.horizon .dock #play{grid-column:1;grid-row:2}.horizon .dock .actions{grid-column:2;grid-row:2;display:block}.horizon .dock .action-button,.horizon .dock .action-button.play-button{width:100%;height:44px;min-height:44px;padding:4px 10px;border-radius:22px;font-size:15px;line-height:18px}.horizon .dock .rail{height:68px}.horizon .dock .time-input{top:0;height:44px}.horizon .dock .phase-track{top:17px}.horizon .dock .rain-trace{top:7px}.horizon .dock .hour-markers{top:48px;font-size:13px}.horizon .dock .marker[data-offset="360"],.horizon .dock .marker[data-offset="1080"]{display:none}.horizon #credits{position:fixed;box-sizing:border-box;left:calc(12px + var(--phone-safe-l));right:calc(12px + var(--phone-safe-r));top:calc(12px + var(--phone-safe-t));bottom:calc(12px + var(--phone-safe-b));width:auto;height:auto;max-width:620px;max-height:calc(100dvh - 24px - var(--phone-safe-t) - var(--phone-safe-b));margin:auto;padding:0 16px 16px;overflow-y:auto;overscroll-behavior:contain}.horizon #credits .dialog-heading{position:sticky;top:0;z-index:1;background:#f7fafc;min-height:68px;gap:12px;padding:8px 0}.horizon #credits h2{font-size:24px;line-height:32px;margin:0}.horizon #credits a{display:inline-flex;align-items:center;min-height:44px;max-width:100%;overflow-wrap:anywhere}.horizon #phone-scene-safe-area{display:block;position:absolute;pointer-events:none;visibility:hidden;left:calc(12px + var(--phone-safe-l));right:calc(12px + var(--phone-safe-r));top:calc(120px + var(--phone-safe-t));bottom:calc(220px + var(--phone-safe-b));border:0;padding:0;margin:0}}@media(max-width:1023px)and (orientation:landscape){.horizon .app-header{top:calc(8px + var(--phone-safe-t));height:44px;align-items:center}.horizon #title-block{padding-bottom:0}.horizon .location-kicker{display:none}.horizon .app-header h1{font-size:32px;line-height:36px;white-space:nowrap}.horizon .app-header h1 span{display:inline;margin:0}.horizon .dock{left:auto;right:calc(12px + var(--phone-safe-r));bottom:calc(12px + var(--phone-safe-b));width:300px}.horizon .dock-readout{grid-template-columns:96px minmax(0,1fr);gap:8px}.horizon #phone-scene-safe-area{top:calc(64px + var(--phone-safe-t));right:calc(324px + var(--phone-safe-r));bottom:calc(12px + var(--phone-safe-b))}}
