@font-face{font-family:DM Mono;font-weight:300;font-style:normal;src:url(/assets/DMMono-Light-Bqd_HqIA.ttf) format("truetype")}@font-face{font-family:DM Mono;font-weight:300;font-style:italic;src:url(/assets/DMMono-LightItalic-MMfEb-KN.ttf) format("truetype")}@font-face{font-family:DM Mono;font-weight:400;font-style:normal;src:url(/assets/DMMono-Regular-CHcedrof.ttf) format("truetype")}@font-face{font-family:DM Mono;font-weight:400;font-style:italic;src:url(/assets/DMMono-Italic-DLMvJ-WU.ttf) format("truetype")}@font-face{font-family:DM Mono;font-weight:500;font-style:normal;src:url(/assets/DMMono-Medium-BtO9kMc2.ttf) format("truetype")}@font-face{font-family:DM Mono;font-weight:500;font-style:italic;src:url(/assets/DMMono-MediumItalic-kpPSN6rk.ttf) format("truetype")}@font-face{font-family:Cormorant Garamond;font-style:normal;src:url(/assets/Cormorant-VariableFont_wght-kWcYAABD.ttf) format("truetype")}@font-face{font-family:Cormorant Garamond;font-style:italic;src:url(/assets/Cormorant-Italic-VariableFont_wght-DZBrG4C-.ttf) format("truetype")}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--bg: #081418;--panel-bg: rgba(12, 24, 28, .97);--border: rgba(80, 140, 140, .15);--accent: rgba(80, 200, 180, .55);--text: rgba(190, 225, 215, .9);--text-dim: rgba(130, 170, 160, .55);--zodiac: rgba(180, 240, 220, .72);--ecliptic: rgba(120, 200, 180, .35);--planet-label: rgba(190, 225, 215, .85);--night: rgba(3, 14, 20, .38);--alert-bg: rgba(255,200,80,.08);--alert-border: rgba(255,200,80,.3);--panel-title: rgba(190,225,215,.9);--date-display-bg: rgba(15,30,35,.5);--date-display-text: rgba(190,225,215,.8);--btn-bg: rgba(15,30,35,.5);--btn-hover-bg: rgba(30,55,60,.6);--btn-active-bg: rgba(45,80,85,.6);--btn-active-border: rgba(100,200,180,.4);--btn-active-text: rgba(210,245,235,1);--btn-go-bg: rgba(30,60,60,.5);--btn-go-border: rgba(80,140,140,.3);--btn-go-text: rgba(170,220,210,.9);--btn-go-hover-bg: rgba(45,80,80,.7);--input-bg: rgba(8,16,20,.6);--input-text: rgba(190,225,215,.9);--input-focus-border: rgba(100,170,160,.4);--overlay-bg: rgba(10,22,28,.92);--modal-backdrop: rgba(2,5,8,.88);--modal-card-bg: rgba(10,22,28,.98);--modal-card-border: rgba(80,140,140,.25);--toast-bg: rgba(10,22,28,.95);--toast-border: rgba(80,140,140,.3);--toast-text: rgba(190,225,215,.9);--scrollbar-thumb: rgba(80,140,140,.15);--slider-track: rgba(80,140,140,.2);--slider-thumb: rgba(100,200,180,.8);--slider-thumb-hover: rgba(120,220,200,1);--fs-2xs: 7.5px;--fs-xs: 8px;--fs-sm: 8.5px;--fs-base: 9px;--fs-md: 9.5px;--fs-lg: 10px;--fs-xl: 10.5px;--fs-2xl: 11px;--fs-3xl: 12px;--fs-4xl: 13px;--fs-5xl: 14px;--fs-6xl: 16px;--fs-7xl: 17px;--fs-8xl: 20px;--sp-2xs: 2px;--sp-xs: 3px;--sp-sm: 4px;--sp-md: 6px;--sp-lg: 8px;--sp-xl: 9px;--sp-2xl: 12px;--sp-3xl: 14px;--sp-4xl: 16px;--sp-5xl: 18px;--sp-6xl: 22px;--panel-w: 270px;--panel-pad: var(--sp-4xl);--overlay-btn-w: 36px;--overlay-btn-h: 36px;--touch-min: 44px;--radius-xs: 2px;--radius-sm: 4px;--radius-md: 5px;--radius-lg: 6px;--radius-xl: 8px;--radius-2xl: 10px;--radius-3xl: 12px;--radius-pill: 20px;--radius-circle: 50%;--alert-panel-min-w: 420px;--alert-panel-max-w: 620px;--bib-panel-w: 280px}html,body{width:100%;height:100%;overflow:hidden;background:var(--bg);color:var(--text);font-family:DM Mono,monospace;font-weight:300}#map,#enochCanvas{display:block;position:fixed;top:0;left:0;width:100%;height:100%;cursor:grab}#map.grabbing,#enochCanvas.grabbing{cursor:grabbing}#enochCanvas{position:fixed;top:0;left:0;pointer-events:none;z-index:50}#panel{position:fixed;top:0;left:0;width:var(--panel-w);height:100vh;height:calc(var(--vh, 1vh) * 100);background:var(--panel-bg);border-right:1px solid var(--border);display:flex;flex-direction:column;padding:var(--sp-6xl) var(--sp-4xl) var(--sp-4xl);gap:0;z-index:200;transition:transform .4s cubic-bezier(.4,0,.2,1);overflow-y:auto;pointer-events:auto;will-change:transform;contain:layout paint}#panel.hidden{transform:translate(calc(-1 * var(--panel-w)));pointer-events:none}#panel::-webkit-scrollbar{width:var(--radius-xs)}#panel::-webkit-scrollbar-thumb{background:var(--scrollbar-thumb);border-radius:var(--radius-xs)}.panel-title{font-family:Cormorant Garamond,serif;font-weight:300;font-style:italic;font-size:var(--fs-7xl);letter-spacing:.02em;color:var(--panel-title);line-height:1.3;margin-bottom:var(--sp-sm);pointer-events:none}.panel-sub{font-size:var(--fs-xs);letter-spacing:.18em;text-transform:uppercase;color:var(--text-dim);margin-bottom:var(--sp-5xl);pointer-events:none}#date-display{font-family:DM Mono,monospace;font-size:var(--fs-2xl);font-weight:400;color:var(--date-display-text);background:var(--date-display-bg);border:1px solid var(--border);border-radius:var(--radius-lg);padding:7px var(--sp-xl);letter-spacing:.04em;line-height:1.5;margin-bottom:var(--sp-3xl)}.section{margin-bottom:var(--sp-3xl);pointer-events:auto}.section-label{font-size:var(--fs-xs);letter-spacing:.2em;text-transform:uppercase;color:var(--text-dim);margin-bottom:var(--sp-md);padding-bottom:var(--sp-xs);border-bottom:1px solid var(--border)}.btn{display:block;width:100%;padding:var(--sp-md) var(--sp-xl);background:var(--btn-bg);color:var(--text);border:1px solid var(--border);border-radius:var(--radius-md);cursor:pointer;font-family:DM Mono,monospace;font-size:var(--fs-xl);font-weight:300;letter-spacing:.05em;text-align:left;transition:background .15s,border-color .15s;margin-bottom:var(--sp-sm);pointer-events:auto}.btn:hover{background:var(--btn-hover-bg);border-color:#7896be4d}.btn.active{background:var(--btn-active-bg);border-color:var(--btn-active-border);color:var(--btn-active-text)}.dt-row{display:flex;gap:var(--sp-sm);margin-bottom:var(--sp-sm)}input[type=number].year-input{flex:1;background:var(--input-bg);border:1px solid var(--border);color:var(--input-text);padding:5px 7px;border-radius:var(--radius-md);font-family:DM Mono,monospace;font-size:var(--fs-lg);outline:none;min-width:0;pointer-events:auto}input[type=number].year-input:focus{border-color:var(--input-focus-border)}input[type=datetime-local]{flex:1;background:var(--input-bg);border:1px solid var(--border);color:var(--input-text);padding:5px 7px;border-radius:var(--radius-md);font-family:DM Mono,monospace;font-size:var(--fs-lg);outline:none;min-width:0;pointer-events:auto}input[type=datetime-local]:focus{border-color:var(--input-focus-border)}input[type=datetime-local]::-webkit-calendar-picker-indicator{filter:invert(.7) brightness(.7);cursor:pointer}.btn-go{padding:5px var(--sp-xl);background:var(--btn-go-bg);border:1px solid var(--btn-go-border);color:var(--btn-go-text);border-radius:var(--radius-md);cursor:pointer;font-family:DM Mono,monospace;font-size:var(--fs-lg);font-weight:400;letter-spacing:.05em;white-space:nowrap;transition:background .15s;pointer-events:auto}.btn-go:hover{background:var(--btn-go-hover-bg)}.speed-row{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--sp-sm)}.speed-label{font-size:var(--fs-lg);color:var(--text-dim)}#speedValue{font-size:var(--fs-lg);color:var(--text)}input[type=range]{width:100%;-webkit-appearance:none;-moz-appearance:none;appearance:none;height:2px;background:var(--slider-track);border-radius:var(--radius-xs);outline:none;cursor:pointer;margin:var(--sp-xs) 0}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:11px;height:11px;background:var(--slider-thumb);border-radius:50%;cursor:pointer;transition:background .15s}input[type=range]::-webkit-slider-thumb:hover{background:var(--slider-thumb-hover)}.toggle-list{display:flex;flex-direction:column;gap:var(--sp-sm)}.toggle-item{display:flex;align-items:center;gap:var(--sp-lg);font-size:var(--fs-xl);color:var(--text);cursor:pointer;padding:var(--sp-xs) 0;transition:color .15s}.toggle-item:hover{color:#d2e1f5}.toggle-item input{display:none}.toggle-dot{width:7px;height:7px;border-radius:50%;border:1.5px solid currentColor;flex-shrink:0;transition:background .15s}.toggle-item input:checked+.toggle-dot{background:currentColor}#settingsThemeSelect{width:100%;padding:var(--sp-sm) var(--sp-lg);background:var(--input-bg);border:1px solid var(--border);color:var(--text);border-radius:var(--radius-md);font-family:DM Mono,monospace;font-size:var(--fs-base);font-weight:300;letter-spacing:.05em;-moz-appearance:none;appearance:none;-webkit-appearance:none;cursor:pointer;outline:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M0 0l5 6 5-6z' fill='rgba(200,215,235,0.5)'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 8px center;background-size:10px 6px;padding-right:24px;pointer-events:auto}#settingsThemeSelect:hover{border-color:#78a0d266}#settingsThemeSelect:focus{border-color:var(--input-focus-border)}#settingsThemeSelect option{background:var(--panel-bg);color:var(--text)}#settingsLocaleSelect{width:100%;padding:var(--sp-sm) var(--sp-lg);background:var(--input-bg);border:1px solid var(--border);color:var(--text);border-radius:var(--radius-md);font-family:DM Mono,monospace;font-size:var(--fs-base);font-weight:300;letter-spacing:.05em;-moz-appearance:none;appearance:none;-webkit-appearance:none;cursor:pointer;outline:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M0 0l5 6 5-6z' fill='rgba(200,215,235,0.5)'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 8px center;background-size:10px 6px;padding-right:24px;pointer-events:auto}#settingsLocaleSelect:hover{border-color:#78a0d266}#settingsLocaleSelect:focus{border-color:var(--input-focus-border)}#settingsLocaleSelect option{background:var(--panel-bg);color:var(--text)}.toggle-dot-alert{color:#ffd250cc}.toggle-dot-cities{color:#ffc878b3}.degree-symbol{font-size:var(--fs-base);color:var(--text-dim)}.alert-toggle{font-size:var(--fs-base);margin-bottom:var(--sp-sm)}.event-loading{font-size:var(--fs-md);color:var(--text-dim);padding:var(--sp-xs) 0}.toggle-no-margin{margin:0}.cities-label{font-size:var(--fs-md)}.date-modal-row{display:flex;gap:6px;align-items:center;margin-bottom:var(--sp-sm)}.date-modal-field-day{width:56px;flex:none;text-align:center}.date-modal-field-month{flex:1;min-width:0;-webkit-appearance:none;-moz-appearance:none;appearance:none}.date-modal-field-hm{width:56px;flex:none;text-align:center}.date-modal-time-sep{color:var(--text-dim);font-family:DM Mono,monospace;font-size:var(--fs-3xl);line-height:1;flex-shrink:0}.date-modal-year-stepper{display:flex;flex:1;gap:0;align-items:center}.date-modal-year-stepper .date-modal-field-year{flex:1;min-width:0;text-align:center;border-radius:0}.year-step-btn{width:40px;flex:none;height:100%;min-height:33px;background:var(--input-bg);border:1px solid var(--border);color:var(--text-dim);cursor:pointer;font-size:12px;display:flex;align-items:center;justify-content:center;transition:background .15s,color .15s}.year-step-btn:hover{background:var(--btn-hover-bg);color:var(--text)}.year-step-up{border-radius:var(--radius-lg) 0 0 var(--radius-lg)}.year-step-down{border-radius:0 var(--radius-lg) var(--radius-lg) 0}.top-cal-label{font-size:var(--fs-4xl)}.top-hebrew-label{opacity:.5}.top-enoch-label{color:var(--top-enoch-text)}.top-hebrew-text{color:var(--text-dim)}.top-utc-label,.top-tz-label{color:var(--time-display-utc);font-size:var(--fs-xs);letter-spacing:.15em}.date-display-julian{margin-top:var(--sp-sm);font-size:var(--fs-base);opacity:.5;line-height:1.4}.date-display-julian-cal{font-size:7px;letter-spacing:.1em}.date-display-local{margin-top:var(--sp-sm)}.share-toast{position:fixed;bottom:110px;left:50%;transform:translate(-50%);background:var(--toast-bg);border:1px solid var(--toast-border);border-radius:var(--radius-lg);padding:var(--sp-md) var(--sp-2xl);color:var(--toast-text);font-size:var(--fs-2xl);font-family:DM Mono,monospace;z-index:300;pointer-events:none;opacity:0;transition:opacity .2s;white-space:nowrap}.tz-combobox{margin-top:var(--sp-md)}.tz-combobox-label{font-size:var(--fs-xs);letter-spacing:.15em;text-transform:uppercase;color:var(--text-dim);display:block;margin-bottom:var(--sp-xs)}.tz-combobox-input{width:100%;background:var(--input-bg);border:1px solid var(--border);color:var(--text);padding:var(--sp-lg) 10px;border-radius:var(--radius-lg);font-family:DM Mono,monospace;font-size:var(--fs-3xl);outline:none;transition:border-color .15s;box-sizing:border-box}.tz-combobox-input:focus{border-color:var(--input-focus-border)}.tz-combobox-dropdown{position:fixed;z-index:500;background:var(--tz-dropdown-bg);border:1px solid var(--tz-dropdown-border);border-radius:var(--radius-lg);max-height:200px;overflow-y:auto;display:none;box-shadow:0 4px 20px #00000080}.tz-combobox-dropdown.visible{display:block}.tz-combobox-group{font-size:var(--fs-xs);letter-spacing:.15em;text-transform:uppercase;color:var(--text-dim);padding:var(--sp-md) 10px var(--sp-xs);border-top:1px solid var(--border);position:sticky;top:0;background:var(--tz-dropdown-bg)}.tz-combobox-group:first-child{border-top:none}.tz-combobox-item{display:flex;justify-content:space-between;align-items:center;padding:var(--sp-sm) 10px;cursor:pointer;font-size:var(--fs-lg);color:var(--tz-dropdown-item);transition:background .1s}.tz-combobox-item:hover,.tz-combobox-item.highlight{background:var(--tz-dropdown-item-hover)}.tz-combobox-item.active{color:var(--tz-dropdown-item-active);background:var(--tz-dropdown-item-hover)}.tz-combobox-name{font-family:DM Mono,monospace}.tz-combobox-offset{font-size:var(--fs-sm);color:var(--text-dim);flex-shrink:0;margin-left:8px}.overlay-tz-wrapper{padding:4px 0}.dso-header-row{display:flex;align-items:center;gap:5px}.dso-header-dot{width:6px;height:6px;border-radius:50%;flex-shrink:0}.dso-header-label{font-size:var(--fs-2xs);letter-spacing:.2em;text-transform:uppercase;color:var(--text-dim)}.dso-header-count{font-size:var(--fs-2xs);color:var(--text-dim);opacity:.6;margin-left:auto}.log-entry-group{font-size:var(--fs-xs);margin-left:var(--sp-md)}.log-sep-value{color:#ffd764cc}#tooltip{position:fixed;background:var(--tooltip-bg);border:1px solid var(--tooltip-border);border-radius:var(--radius-xl);padding:var(--sp-xl) var(--sp-2xl);pointer-events:none;z-index:200;min-width:140px;opacity:0;transform:translateY(4px);transition:opacity .18s,transform .18s;will-change:opacity,transform;contain:layout paint}#tooltip.visible{opacity:1;transform:translateY(0)}.tt-name{font-family:Cormorant Garamond,serif;font-style:italic;font-size:var(--fs-5xl);color:var(--tooltip-name);margin-bottom:var(--sp-sm)}.tt-subtitle{font-family:DM Mono,monospace;font-size:var(--fs-sm);color:var(--text-dim);margin-bottom:var(--sp-xs);letter-spacing:.04em}.tt-subtitle:empty{display:none}.tt-row{font-size:var(--fs-md);color:var(--text-dim);display:flex;justify-content:space-between;gap:var(--sp-2xl);line-height:1.7}.tt-row:empty{display:none}.tt-val{color:var(--tooltip-val)}.event-list{display:flex;flex-direction:column;gap:var(--sp-sm)}.event-card{display:flex;align-items:center;gap:var(--sp-lg);padding:var(--sp-md) var(--sp-lg);border-radius:var(--radius-md);background:var(--event-card-bg);border:1px solid var(--border);cursor:pointer;transition:background .15s,border-color .15s}.event-card:hover{background:var(--event-card-hover-bg);border-color:var(--overlay-btn-hover-border)}.event-card.active-event{border-color:var(--overlay-btn-active-border);background:var(--event-card-active-bg)}.event-icon{font-size:var(--fs-4xl);line-height:1;flex-shrink:0;width:16px;text-align:center}.event-info{flex:1;min-width:0}.event-name{font-size:var(--fs-md);color:var(--text);letter-spacing:.03em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.event-date{font-size:var(--fs-sm);color:var(--text-dim);margin-top:1px;letter-spacing:.04em}.event-countdown{font-size:var(--fs-xs);color:var(--text-dim);text-align:right;flex-shrink:0;letter-spacing:.03em;line-height:1.4}.event-countdown.past{color:var(--text-dim);opacity:.6}.event-countdown.soon{color:var(--overlay-btn-hover-text)}#seasonBar{position:fixed;bottom:calc(77px + env(safe-area-inset-bottom,0));left:50%;transform:translate(-50%);background:var(--panel-bg);border:1px solid var(--border);border-radius:var(--radius-pill);padding:var(--sp-md) var(--sp-3xl);font-size:var(--fs-md);line-height:1.6;color:var(--text-dim);letter-spacing:.12em;z-index:100;pointer-events:none;white-space:nowrap}#seasonBar span{color:var(--season-bar-text)}.dso-masters{display:flex;gap:var(--sp-xs);flex-wrap:wrap;margin-bottom:var(--sp-md)}.dso-master-btn{font-family:DM Mono,monospace;font-size:var(--fs-xs);letter-spacing:.04em;padding:var(--sp-xs) 7px;border-radius:9px;border:1px solid var(--border);cursor:pointer;background:var(--btn-bg);color:var(--text-dim);transition:background .15s,border-color .15s,color .15s;white-space:nowrap}.dso-master-btn.on{background:var(--btn-active-bg);color:var(--overlay-btn-active-text)}.dso-search{width:100%;background:var(--input-bg);border:1px solid var(--border);color:var(--text);padding:var(--sp-sm) var(--sp-lg);border-radius:var(--radius-md);font-family:DM Mono,monospace;font-size:var(--fs-lg);outline:none;margin-bottom:var(--sp-sm)}.dso-search:focus{border-color:var(--input-focus-border)}.dso-search::placeholder{color:var(--text-dim)}.dso-path-row{display:flex;align-items:center;gap:var(--sp-md);margin-bottom:var(--sp-sm);flex-wrap:wrap}.dso-path-btn{font-family:DM Mono,monospace;font-size:var(--fs-2xs);padding:var(--sp-xs) var(--sp-md);border-radius:var(--radius-xl);border:1px solid var(--border);cursor:pointer;background:var(--btn-bg);color:var(--text-dim);transition:background .15s,border-color .15s,color .15s;white-space:nowrap}.dso-path-btn.on{color:var(--overlay-btn-active-text)}.dso-cities-row{display:flex;align-items:center;gap:var(--sp-lg);margin-top:var(--sp-sm)}#dsoList{max-height:200px;overflow-y:auto;padding:var(--sp-sm) 0 10px}#dsoList::-webkit-scrollbar{width:var(--radius-xs)}#dsoList::-webkit-scrollbar-thumb{background:#6482aa26;border-radius:var(--radius-xs)}.dso-group-header{font-size:var(--fs-2xs);letter-spacing:.2em;text-transform:uppercase;color:var(--text-dim);padding:var(--sp-lg) var(--sp-xs) var(--sp-xs);border-bottom:1px solid var(--border);margin-bottom:var(--sp-xs);display:flex;align-items:center;gap:5px}.dso-group-header-toggle{cursor:pointer;flex-shrink:0;font-size:var(--fs-base);opacity:.7;transition:opacity .15s;-webkit-user-select:none;user-select:none}.dso-group-header-toggle:hover{opacity:1}.dso-row{display:flex;align-items:center;gap:var(--sp-md);padding:var(--sp-xs) var(--sp-sm);border-radius:var(--radius-sm);cursor:pointer;transition:background .12s}.dso-row:hover{background:var(--event-card-hover-bg)}.dso-row.highlighted{background:var(--event-card-active-bg)}.dso-row-dot{width:4px;height:4px;border-radius:50%;flex-shrink:0;opacity:.75}.dso-row-name{flex:1;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:var(--fs-base)}.dso-row-coords{font-size:var(--fs-2xs);color:var(--text-dim);flex-shrink:0}#alertPanel{position:fixed;bottom:120px;left:50%;transform:translate(-50%);display:flex;flex-direction:column;gap:var(--sp-md);z-index:150;pointer-events:none;max-height:40vh;overflow-y:auto;min-width:var(--alert-panel-min-w);max-width:var(--alert-panel-max-w);contain:layout paint}#alertPanel::-webkit-scrollbar{width:var(--radius-xs)}#alertPanel::-webkit-scrollbar-thumb{background:#ffc85033;border-radius:var(--radius-xs)}.alert-card{background:var(--alert-card-bg);border:1px solid var(--alert-border);border-left:3px solid var(--alert-title);border-radius:var(--radius-xl);padding:var(--sp-xl) var(--sp-2xl);pointer-events:all;animation:alertSlide .4s ease;display:flex;align-items:flex-start;gap:10px;box-shadow:0 4px 24px #00000080,0 0 30px #ffc8500a}@keyframes alertSlide{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.alert-icon{font-size:var(--fs-6xl);line-height:1;flex-shrink:0;margin-top:1px}.alert-body{flex:1;min-width:0}.alert-title{font-size:var(--fs-lg);font-weight:400;color:var(--alert-title);letter-spacing:.06em;margin-bottom:var(--sp-xs)}.alert-detail{font-size:var(--fs-base);color:var(--alert-detail);line-height:1.6}.alert-close{font-size:var(--fs-lg);color:var(--alert-close);cursor:pointer;padding:0 var(--sp-xs);flex-shrink:0;transition:color .15s;pointer-events:all}.alert-close:hover{color:var(--alert-close-hover)}.alert-config{background:var(--alert-bg);border:1px solid var(--alert-border);border-radius:var(--radius-lg);padding:var(--sp-lg) var(--sp-xl);margin-top:var(--sp-sm)}.alert-config select{background:var(--input-bg);border:1px solid var(--border);color:var(--text);padding:var(--sp-sm) var(--sp-md);border-radius:var(--radius-md);font-family:DM Mono,monospace;font-size:var(--fs-base);outline:none;width:100%;margin-bottom:var(--sp-sm);cursor:pointer}.alert-config select option{background:var(--panel-bg)}.alert-precision-row{display:flex;align-items:center;gap:var(--sp-md);margin-bottom:var(--sp-sm)}.alert-precision-label{font-size:var(--fs-base);color:var(--text-dim);flex-shrink:0}.alert-precision-input{flex:1;background:var(--input-bg);border:1px solid var(--border);color:var(--text);padding:var(--sp-xs) var(--sp-md);border-radius:var(--radius-sm);font-family:DM Mono,monospace;font-size:var(--fs-base);outline:none}.alert-precision-input:focus{border-color:var(--alert-border)}.alert-log-btn{display:block;width:100%;padding:var(--sp-sm) var(--sp-lg);background:var(--btn-bg);color:var(--text-dim);border:1px solid var(--border);border-radius:var(--radius-sm);cursor:pointer;font-family:DM Mono,monospace;font-size:var(--fs-base);text-align:center;transition:background .15s,color .15s;margin-top:var(--sp-xs)}.alert-log-btn:hover{background:var(--btn-hover-bg);color:var(--text)}#logModal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:300;background:var(--modal-backdrop);display:flex;align-items:center;justify-content:center;opacity:0;pointer-events:none;transition:opacity .25s}#logModal.visible{opacity:1;pointer-events:all}.log-box{background:var(--log-box-bg);border:1px solid var(--log-box-border);border-radius:var(--radius-3xl);width:min(660px,90vw);max-height:70vh;display:flex;flex-direction:column;overflow:hidden}.log-header{padding:var(--sp-3xl) var(--sp-2xl);border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;flex-shrink:0}.log-title{font-family:Cormorant Garamond,serif;font-style:italic;font-size:var(--fs-6xl);color:var(--text)}.log-close{color:var(--text-dim);cursor:pointer;font-size:var(--fs-6xl);transition:color .15s}.log-close:hover{color:var(--text)}.log-toolbar{padding:var(--sp-lg) var(--sp-4xl);border-bottom:1px solid var(--border);display:flex;gap:var(--sp-md);flex-shrink:0}.log-btn-sm{padding:var(--sp-xs) var(--sp-xl);background:var(--btn-bg);border:1px solid var(--border);border-radius:var(--radius-sm);cursor:pointer;font-family:DM Mono,monospace;font-size:var(--fs-base);color:var(--text-dim);transition:background .15s,color .15s}.log-btn-sm:hover{color:var(--text);background:var(--btn-hover-bg)}#logList{flex:1;overflow-y:auto;padding:var(--sp-lg) var(--sp-4xl) var(--sp-4xl)}#logList::-webkit-scrollbar{width:3px}#logList::-webkit-scrollbar-thumb{background:var(--scrollbar-thumb);border-radius:var(--radius-xs)}.log-entry{padding:7px var(--sp-lg);border-radius:var(--radius-md);border:1px solid transparent;margin-bottom:var(--sp-sm);transition:border-color .15s}.log-entry:hover{border-color:var(--border)}.log-entry-title{font-size:var(--fs-md);color:var(--log-entry-title);letter-spacing:.04em;margin-bottom:var(--sp-xs)}.log-entry-detail{font-size:var(--fs-sm);color:var(--log-entry-detail);line-height:1.6}.log-entry-detail a{color:var(--overlay-btn-hover-text);cursor:pointer;text-decoration:underline}.log-entry-detail a:hover{color:var(--overlay-btn-active-text)}.log-empty{font-size:var(--fs-lg);color:var(--text-dim);text-align:center;padding:30px 0;font-style:italic}#cityTooltip{position:fixed;background:var(--tooltip-bg);border:1px solid var(--tooltip-border);border-radius:var(--radius-lg);padding:var(--sp-sm) var(--sp-xl);pointer-events:none;z-index:210;font-size:var(--fs-lg);color:var(--text);opacity:0;transition:opacity .15s;white-space:nowrap;contain:layout paint}#cityTooltip.visible{opacity:1}#earthquakeTooltip{position:fixed;background:var(--tooltip-bg);border:1px solid var(--tooltip-border);border-radius:var(--radius-lg);padding:var(--sp-sm) var(--sp-xl);pointer-events:none;z-index:210;font-size:var(--fs-lg);color:var(--text);opacity:0;transition:opacity .15s;white-space:nowrap;contain:layout paint}#earthquakeTooltip.visible{opacity:1}#conquestTooltip{position:fixed;background:var(--tooltip-bg);border:1px solid var(--tooltip-border);border-radius:var(--radius-lg);padding:var(--sp-sm) var(--sp-md);pointer-events:none;z-index:210;font-size:var(--fs-sm);color:var(--text);opacity:0;transition:opacity .15s;max-width:340px;white-space:normal;line-height:1.5;contain:layout paint}#conquestTooltip.visible{opacity:1}#conquestTooltip strong{font-size:var(--fs-base)}#conquestTooltip em{font-style:italic}.date-modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:400;background:var(--modal-backdrop);display:flex;align-items:center;justify-content:center;opacity:0;pointer-events:none;visibility:hidden;transition:opacity .2s,visibility 0s .2s}.date-modal.visible{opacity:1;pointer-events:all;visibility:visible;transition:opacity .2s,visibility 0s}.date-modal-box{background:var(--modal-card-bg);border:1px solid var(--modal-card-border);border-radius:var(--radius-3xl);width:min(420px,94vw);max-height:90vh;max-height:min(90vh,calc(100dvh - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px)));box-shadow:0 8px 40px #0009;overflow-y:auto;overflow-x:hidden}.date-modal-header{display:flex;align-items:center;justify-content:space-between;padding:var(--sp-3xl) var(--sp-5xl);border-bottom:1px solid var(--border)}.date-modal-title{font-family:DM Mono,monospace;font-weight:400;font-size:var(--fs-4xl);color:var(--text)}.date-modal-close{color:var(--text-dim);cursor:pointer;font-size:var(--fs-6xl);transition:color .15s;padding:var(--sp-xs) var(--sp-sm)}.date-modal-close:hover{color:var(--text)}.tide-panel{position:fixed;bottom:120px;left:16px;width:530px;z-index:120;background:var(--overlay-bg);border:1px solid var(--border);border-radius:var(--radius-2xl);overflow:visible;box-shadow:0 4px 24px #00000080;display:none;pointer-events:auto}.tide-panel>:not(.tide-tooltip){overflow:hidden}.tide-panel.visible{display:block}.tide-panel-header{padding:10px 14px 6px;display:flex;align-items:center;justify-content:space-between;cursor:grab;user-select:none;-webkit-user-select:none}.tide-panel-date{font-family:DM Mono,monospace;font-size:10px;color:var(--tide-axis-secondary);margin-left:auto;margin-right:8px;white-space:nowrap}.tide-drag-handle{color:var(--tide-panel-title);opacity:.35;font-size:14px;line-height:1;margin-right:4px}.tide-panel-close{background:none;border:none;color:var(--tide-panel-title);font-size:18px;line-height:1;padding:0 4px;cursor:pointer;opacity:.6;transition:opacity .15s}.tide-panel-close:hover{opacity:1}.tide-tooltip{position:absolute;display:none;pointer-events:none;background:var(--overlay-bg);border:1px solid var(--border);border-radius:6px;padding:3px 8px;font:400 10px DM Mono,monospace;color:var(--fg);white-space:nowrap;z-index:130}.tide-panel-title{font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--tide-panel-title);font-family:DM Mono,monospace}#tideCurveCanvas{display:block;width:100%;cursor:grab;touch-action:none}#tideCurveCanvas:active{cursor:grabbing}.tide-zoom-btns{display:flex;gap:4px}.tide-zoom-btn{font-family:DM Mono,monospace;font-size:10px;letter-spacing:.06em;padding:2px 8px;border:1px solid var(--tide-zoom-border);border-radius:4px;background:transparent;color:var(--tide-zoom-text);cursor:pointer;transition:all .15s ease}.tide-zoom-btn:hover{border-color:var(--tide-zoom-hover-border);color:var(--tide-zoom-hover-text)}.tide-zoom-btn.active{background:var(--tide-zoom-active-bg);border-color:var(--tide-zoom-active-border);color:var(--tide-zoom-active-text)}.date-modal-body{padding:var(--sp-3xl) var(--sp-5xl)}.date-modal-section{margin-bottom:10px}.date-modal-section:last-child{margin-bottom:0}.settings-modal-body{padding:var(--sp-3xl) var(--sp-5xl)}.settings-section{margin-bottom:var(--sp-3xl)}.settings-section:last-child{margin-bottom:0}.settings-label{font-size:var(--fs-xs);letter-spacing:.2em;text-transform:uppercase;color:var(--text-dim);margin-bottom:var(--sp-sm)}.settings-section select{width:100%;background:var(--date-modal-input-bg);border:1px solid var(--date-modal-input-border);color:var(--date-modal-input-text);font-family:DM Mono,monospace;font-size:var(--fs-3xl);padding:var(--sp-sm) var(--sp-md);border-radius:var(--radius-lg);-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:pointer}.settings-section select:focus{border-color:var(--date-modal-input-focus-border);outline:none}.tarena-night-panel{position:fixed;right:16px;width:var(--bib-panel-w);z-index:120;background:var(--bib-panel-bg);border:1px solid var(--border);border-radius:var(--radius-2xl);padding:var(--sp-2xl);box-shadow:0 4px 24px #00000080;pointer-events:auto;margin-bottom:var(--sp-md)}.tarena-night-header{display:flex;align-items:center;gap:var(--sp-md);margin-bottom:var(--sp-xs)}.tarena-night-name{font-family:DM Mono,monospace;font-size:var(--fs-2xl);color:var(--enoch-tarena-text)}.tarena-night-dots{display:flex;gap:var(--sp-sm);font-size:var(--fs-lg)}.tarena-dots-energy .dot-on{color:var(--enoch-fishing-dot)}.tarena-dots-energy .dot-off{opacity:.25;color:var(--enoch-fishing-dot)}.tarena-dots-planting .dot-on{color:var(--enoch-planting-dot)}.tarena-dots-planting .dot-off{opacity:.25;color:var(--enoch-planting-dot)}.tarena-night-desc{font-size:var(--fs-sm);color:var(--text-dim);line-height:1.4}.tarena-section{margin-bottom:var(--sp-lg)}.tarena-divider{font-size:var(--fs-xs);letter-spacing:.18em;text-transform:uppercase;color:var(--text-dim);margin:10px 0 var(--sp-md);padding-top:var(--sp-lg);border-top:1px solid var(--border)}@media(max-width:639px){.tarena-night-panel{display:none}}.layer-toggles{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--sp-xs) var(--sp-lg);max-height:300px;overflow-y:auto;padding-right:var(--sp-sm);scrollbar-width:thin}.layer-toggles::-webkit-scrollbar{width:4px}.layer-toggles::-webkit-scrollbar-track{background:transparent}.layer-toggles::-webkit-scrollbar-thumb{background:var(--scrollbar-thumb);border-radius:var(--radius-xs)}.layer-item{display:flex;align-items:center;gap:var(--sp-sm);font-size:var(--fs-lg);color:var(--text-dim);cursor:pointer;padding:var(--sp-xs) 0;transition:color .15s;user-select:none;-webkit-user-select:none}.layer-item:hover{color:var(--text)}.layer-item input{display:none}.layer-switch{position:relative;width:28px;height:16px;background:var(--border);border-radius:8px;transition:background .25s ease,box-shadow .25s ease;flex-shrink:0}.layer-switch-thumb{position:absolute;top:2px;left:2px;width:12px;height:12px;border-radius:50%;background:var(--text-dim);transition:transform .2s cubic-bezier(.4,0,.2,1),background .2s ease}.layer-item input:checked+.layer-switch{background:var(--layer-color, var(--accent));box-shadow:0 0 6px color-mix(in srgb,var(--layer-color, var(--accent)) 40%,transparent)}.layer-item input:checked+.layer-switch .layer-switch-thumb{transform:translate(12px);background:var(--text)}.overlay-hem-toggle{font-size:var(--fs-sm);font-weight:600;letter-spacing:.05em;min-width:28px}.settings-row-2col{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-lg);margin-bottom:var(--sp-3xl)}.settings-row-2col .settings-section{margin-bottom:0}.clear-cache-btn{width:100%;background:var(--btn-go-bg);border:1px solid var(--btn-go-border);border-radius:var(--radius-md);color:var(--btn-go-text);cursor:pointer;font-family:DM Mono,monospace;font-size:var(--fs-md);padding:var(--sp-sm) var(--sp-lg);transition:background .15s,color .15s;-webkit-tap-highlight-color:transparent}.clear-cache-btn:hover{background:var(--btn-go-hover-bg);color:var(--btn-active-text)}.date-modal-label{display:block;font-size:var(--fs-xs);letter-spacing:.15em;text-transform:uppercase;color:var(--text-dim);margin-bottom:var(--sp-sm)}.date-modal-input{background:var(--date-modal-input-bg);border:1px solid var(--date-modal-input-border);color:var(--date-modal-input-text);padding:var(--sp-lg) 10px;border-radius:var(--radius-lg);font-family:DM Mono,monospace;font-size:var(--fs-3xl);outline:none;transition:border-color .15s;-moz-appearance:textfield}.date-modal-input::-webkit-inner-spin-button,.date-modal-input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.date-modal-input:focus{border-color:var(--date-modal-input-focus-border)}.date-modal-btn{width:100%;padding:var(--sp-lg) var(--sp-2xl);border:1px solid var(--border);border-radius:var(--radius-lg);cursor:pointer;font-family:DM Mono,monospace;font-size:var(--fs-lg);font-weight:400;letter-spacing:.04em;text-align:center;transition:background .15s,border-color .15s}.date-modal-btn.primary{background:var(--btn-active-bg);border-color:var(--btn-active-border);color:var(--overlay-btn-active-text)}.date-modal-btn.primary:hover{background:var(--btn-hover-bg);border-color:var(--overlay-btn-hover-border)}.date-modal-btn.secondary{background:var(--btn-bg);color:var(--text-dim);margin-top:var(--sp-sm)}.date-modal-btn.secondary:hover{background:var(--btn-hover-bg);color:var(--text)}.donation-modal-box{width:min(440px,94vw)}.donation-message{font-family:Cormorant Garamond,serif;font-size:var(--md-xl);line-height:1.6;color:var(--text);margin-bottom:var(--sp-sm);text-align:center}.donation-subtitle{font-family:Cormorant Garamond,serif;font-style:italic;font-size:var(--fs-xl);color:var(--text-dim);text-align:center;margin-bottom:var(--sp-3xl)}.donation-section{margin-bottom:var(--sp-3xl)}.donation-section:last-child{margin-bottom:0}.donation-detail{display:flex;align-items:center;gap:var(--sp-md);margin-bottom:var(--sp-sm);font-family:DM Mono,monospace;font-size:var(--fs-lg)}.donation-detail-label{color:var(--text-dim);font-size:var(--fs-xs);letter-spacing:.15em;text-transform:uppercase;min-width:70px;flex-shrink:0}.donation-detail-value{color:var(--text);word-break:break-all;flex:1}.donation-tag-value{font-size:var(--fs-4xl);font-weight:500;color:var(--accent)}.donation-copy-btn{background:var(--btn-bg);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-dim);cursor:pointer;padding:var(--sp-xs) var(--sp-sm);font-size:var(--fs-lg);transition:background .15s,color .15s;flex-shrink:0}.donation-copy-btn:hover{background:var(--btn-hover-bg);color:var(--text)}.donation-copy-all-btn{display:block;width:100%;margin-top:var(--sp-lg);padding:var(--sp-md) var(--sp-xl);background:var(--btn-active-bg);border:1px solid var(--btn-active-border);border-radius:var(--radius-lg);color:var(--overlay-btn-active-text);font-family:DM Mono,monospace;font-size:var(--fs-lg);cursor:pointer;text-align:center;transition:background .15s,border-color .15s}.donation-copy-all-btn:hover{background:var(--btn-hover-bg)}.donation-separator{border-top:1px solid var(--border);margin:var(--sp-3xl) 0}.donation-tag-hint{font-size:var(--fs-sm);color:var(--text-dim);margin-top:var(--sp-xs);line-height:1.4}.step-selector{position:fixed;z-index:400;background:var(--modal-card-bg);border:1px solid var(--modal-card-border);border-radius:var(--radius-2xl);padding:10px;box-shadow:0 6px 30px #00000080;opacity:0;pointer-events:none;transform:translateY(6px);transition:opacity .15s,transform .15s;min-width:180px}.step-selector.visible{opacity:1;pointer-events:all;transform:translateY(0)}.step-selector-title{font-size:var(--fs-2xs);letter-spacing:.2em;text-transform:uppercase;color:var(--text-dim);margin-bottom:var(--sp-lg);padding-bottom:var(--sp-sm);border-bottom:1px solid var(--border)}.step-selector-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--sp-sm)}.step-option{padding:var(--sp-lg) var(--sp-md);text-align:center;font-family:DM Mono,monospace;font-size:var(--fs-2xl);font-weight:400;color:var(--text-dim);background:var(--step-option-bg);border:1px solid transparent;border-radius:var(--radius-lg);cursor:pointer;transition:background .12s,border-color .12s,color .12s}.step-option:hover{background:var(--step-option-hover-bg);color:var(--text)}.step-option.active{background:var(--step-option-active-bg);border-color:var(--overlay-btn-active-border);color:var(--overlay-btn-active-text)}#loading{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--bg);display:flex;flex-direction:column;align-items:center;justify-content:center;z-index:999;transition:opacity .6s;overflow:hidden}#loading.fade{opacity:0;pointer-events:none}.loading-stars{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none}.loading-star{position:absolute;width:2px;height:2px;border-radius:50%;background:var(--loading-title);opacity:0;animation:starAppear .6s ease forwards,starTwinkle 3s ease-in-out infinite}.loading-star--1{top:18%;left:12%;animation-delay:0s,.6s}.loading-star--2{top:25%;left:80%;animation-delay:.15s,.75s}.loading-star--3{top:72%;left:22%;animation-delay:.3s,.9s}.loading-star--4{top:65%;left:75%;animation-delay:.45s,1.05s}.loading-star--5{top:35%;left:45%;animation-delay:.6s,1.2s}.loading-star--6{top:55%;left:55%;animation-delay:.75s,1.35s}.loading-star--7{top:15%;left:60%;animation-delay:.9s,1.5s}.loading-star--8{top:80%;left:40%;animation-delay:1.05s,1.65s}.loading-star--9{top:40%;left:18%;animation-delay:1.2s,1.8s}.loading-star--10{top:60%;left:85%;animation-delay:1.35s,1.95s}.loading-star--11{top:28%;left:68%;animation-delay:1.5s,2.1s}.loading-star--12{top:48%;left:32%;animation-delay:1.65s,2.25s}.loading-star--3,.loading-star--5,.loading-star--7{width:3px;height:3px;box-shadow:0 0 4px 1px var(--loading-bar)}@keyframes starAppear{0%{opacity:0;transform:scale(.5)}to{opacity:.7;transform:scale(1)}}@keyframes starTwinkle{0%,to{opacity:.7}50%{opacity:.3}}.loading-glow{position:absolute;width:200px;height:200px;border-radius:50%;background:radial-gradient(circle,var(--loading-bar) 0%,transparent 70%);opacity:0;animation:glowFadeIn 1s .3s ease forwards,glowBreath 4s ease-in-out infinite;pointer-events:none}@keyframes glowFadeIn{0%{opacity:0}to{opacity:.1}}@keyframes glowBreath{0%,to{transform:scale(.8);opacity:.08}50%{transform:scale(1.2);opacity:.15}}.loading-title{font-family:Cormorant Garamond,serif;font-style:italic;font-size:var(--fs-8xl);color:var(--loading-title);margin-bottom:var(--sp-5xl);letter-spacing:.05em;opacity:0;animation:titleFadeIn 1s .2s ease forwards;position:relative;z-index:1}@keyframes titleFadeIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.loading-bar-wrap{width:140px;height:1px;background:var(--loading-bar-track);border-radius:1px;overflow:hidden;position:relative;z-index:1}.loading-bar{height:100%;background:var(--loading-bar);border-radius:1px;animation:loadAnim 1.4s ease-in-out infinite;will-change:transform}@keyframes loadAnim{0%{transform:translate(-100%) scaleX(.4)}50%{transform:translate(0) scaleX(.6)}to{transform:translate(100%) scaleX(.4)}}@media(max-width:639px){.loading-star--1,.loading-star--7,.loading-star--2,.loading-star--10{display:none}.loading-glow{width:140px;height:140px}}.overlay-toggle{position:fixed;top:calc(24px + env(safe-area-inset-top,0));width:52px;height:52px;background:var(--overlay-bg);border:1px solid var(--border);border-radius:50%;display:flex;align-items:center;justify-content:center;cursor:pointer;z-index:102;box-shadow:0 4px 25px #0006,inset 0 1px #ffffff1a;transition:background .3s cubic-bezier(.4,0,.2,1),border-color .3s cubic-bezier(.4,0,.2,1),box-shadow .3s cubic-bezier(.4,0,.2,1),transform .3s cubic-bezier(.4,0,.2,1)}.overlay-toggle:hover{transform:scale(1.08);background:#141e37f2;box-shadow:0 6px 30px #00000080}.overlay-toggle.left{left:calc(24px + env(safe-area-inset-left,0))}.overlay-toggle.left.open svg .menu-icon{display:none}.overlay-toggle.left.open svg .close-icon{display:block}.overlay-toggle.left svg .close-icon{display:none}.overlay-toggle svg{color:var(--overlay-btn-text);transition:transform .4s cubic-bezier(.4,0,.2,1)}#panel:not(.hidden)~#overlayLeftToggle{opacity:0;pointer-events:none;z-index:-1}.panel-close{position:absolute;top:18px;right:18px;width:36px;height:36px;background:var(--btn-bg);border:1px solid var(--border);border-radius:50%;display:flex;align-items:center;justify-content:center;cursor:pointer;z-index:210;transition:background .2s,transform .2s}.panel-close:hover{background:var(--btn-hover-bg);transform:rotate(90deg)}.overlay-controls{position:fixed;bottom:calc(20px + env(safe-area-inset-bottom,0));left:50%;transform:translate(-50%);display:flex;gap:5px;z-index:300;contain:layout paint;padding:5px 8px;background:var(--overlay-bg);border:1px solid var(--border);border-radius:var(--radius-3xl);box-shadow:0 4px 20px #00000080,inset 0 1px #ffffff0d;pointer-events:auto;touch-action:manipulation;user-select:none;-webkit-user-select:none}.overlay-row{display:flex;align-items:center;gap:5px}.overlay-separator{width:1px;background:var(--overlay-separator);margin:0 2px}.overlay-btn{width:var(--overlay-btn-w);height:var(--overlay-btn-h);display:flex;align-items:center;justify-content:center;background:var(--overlay-btn-bg);border:1px solid var(--overlay-btn-border);border-radius:var(--radius-xl);cursor:pointer;color:var(--overlay-btn-text);font-family:DM Mono,monospace;font-size:var(--fs-2xl);font-weight:400;letter-spacing:.04em;transition:background .18s ease,border-color .18s ease,color .18s ease,box-shadow .18s ease;box-shadow:0 2px 6px #0000004d;touch-action:manipulation;-webkit-tap-highlight-color:transparent;pointer-events:auto;position:relative;z-index:1}.overlay-btn:hover{background:var(--overlay-btn-hover-bg);border-color:var(--overlay-btn-hover-border);color:var(--overlay-btn-hover-text);box-shadow:0 3px 10px #0006,0 0 15px var(--overlay-btn-glow)}.overlay-btn:active{background:var(--overlay-btn-active-bg);box-shadow:0 1px 4px #00000059,0 0 20px var(--overlay-btn-glow)}.overlay-btn.active{background:var(--overlay-btn-active-bg);border-color:var(--overlay-btn-active-border);color:var(--overlay-btn-active-text);box-shadow:0 2px 8px #00000059,0 0 12px var(--overlay-btn-glow)}.overlay-btn.offline-disabled{opacity:.3;pointer-events:none;cursor:not-allowed;filter:grayscale(.7);transition:opacity .3s ease,filter .3s ease}#offlineIndicator{position:fixed;top:0;left:0;right:0;height:3px;background:var(--accent);z-index:9999;opacity:0;transition:opacity .3s ease;pointer-events:none}#offlineIndicator.offline{opacity:1;background:#ffa03cd9}#offlineBanner{position:fixed;top:0;left:0;right:0;display:flex;align-items:center;justify-content:center;gap:var(--sp-lg);padding:calc(var(--sp-lg) + env(safe-area-inset-top,0px)) var(--sp-xl) calc(var(--sp-md) + env(safe-area-inset-top,0px));background:var(--modal-card-bg);border-bottom:1px solid var(--border);font-family:DM Mono,monospace;font-size:var(--fs-base);line-height:1.5;color:var(--text);z-index:10000;transform:translateY(-100%);transition:transform .3s ease;pointer-events:auto}#offlineBanner.visible{transform:translateY(0)}#offlineBanner .offline-icon{display:inline-flex;align-items:center;gap:var(--sp-sm);color:#ffa03ce6}#offlineBanner .offline-dismiss{background:var(--btn-go-bg);border:1px solid var(--btn-go-border);border-radius:var(--radius-md);color:var(--btn-go-text);cursor:pointer;font-family:inherit;font-size:var(--fs-sm);padding:var(--sp-xs) var(--sp-xl);margin-left:var(--sp-lg);line-height:1.4;transition:background .15s,color .15s;-webkit-tap-highlight-color:transparent}#offlineBanner .offline-dismiss:hover{background:var(--btn-go-hover-bg);color:var(--btn-active-text)}@keyframes donate-heartbeat{0%{transform:scale(1)}14%{transform:scale(1.3)}28%{transform:scale(1)}42%{transform:scale(1.3)}70%{transform:scale(1)}to{transform:scale(1)}}#donateBtn.donate-pulse{animation:donate-heartbeat 1.2s ease-in-out 3;color:#e74c3c;border-color:#e74c3c;box-shadow:0 0 12px #e74c3c80,0 0 24px #e74c3c33}.overlay-btn.active:hover{box-shadow:0 3px 12px #0006,0 0 18px var(--overlay-btn-glow)}.overlay-btn svg{pointer-events:none}.step-indicator{display:flex;align-items:center;justify-content:center;padding:0 var(--sp-md);font-size:var(--fs-base);font-family:DM Mono,monospace;color:var(--step-indicator-text);letter-spacing:.04em;cursor:pointer;border-radius:var(--radius-sm);transition:color .15s,background .15s;min-width:28px}.step-indicator:hover{color:var(--step-indicator-hover-text);background:var(--step-indicator-hover-bg)}.time-display{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:0 var(--sp-md);font-size:var(--fs-base);font-family:DM Mono,monospace;line-height:1.4;min-width:65px}.time-display-utc{color:var(--time-display-utc);letter-spacing:.03em}.time-display-local{color:var(--time-display-local);letter-spacing:.03em}.bib-events-panel{position:fixed;top:80px;right:16px;width:var(--bib-panel-w);max-height:calc(100vh - 160px);overflow-y:auto;z-index:120;background:var(--bib-panel-bg);border:1px solid var(--border);border-radius:var(--radius-2xl);padding:var(--sp-2xl);box-shadow:0 4px 24px #00000080;display:none;pointer-events:auto}@media(min-width:640px){.bib-events-panel.has-events{display:block}}.bib-events-panel::-webkit-scrollbar{width:var(--radius-xs)}.bib-events-panel::-webkit-scrollbar-thumb{background:var(--scrollbar-thumb);border-radius:var(--radius-xs)}.bib-events-title{font-size:var(--fs-base);letter-spacing:.18em;text-transform:uppercase;color:var(--bib-title-text);margin-bottom:10px;padding-bottom:var(--sp-md);border-bottom:1px solid var(--bib-title-border)}.bib-events-list{display:flex;flex-direction:column;gap:var(--sp-md)}.bib-event-card{display:flex;align-items:flex-start;gap:var(--sp-lg);padding:7px var(--sp-xl);border-radius:var(--radius-lg);background:var(--bib-event-card-bg);border:1px solid var(--bib-event-card-border);transition:background .15s,border-color .15s;pointer-events:auto}.bib-event-card.bib-clickable{cursor:pointer}.bib-event-card.bib-clickable:hover{background:var(--bib-event-card-bg);border-color:var(--border)}.bib-event-info{flex:1;min-width:0}.bib-event-ref{font-size:var(--fs-lg);font-weight:400;color:var(--bib-event-ref);letter-spacing:.02em;display:flex;align-items:center;gap:var(--sp-sm)}.bib-link-icon{font-size:var(--fs-base);color:var(--text-dim)}.bib-event-context{font-size:var(--fs-sm);color:var(--text-dim);margin-top:var(--sp-xs);line-height:1.5}.bib-feast-card{background:color-mix(in srgb,var(--bib-feast-accent) 6%,transparent);border-color:color-mix(in srgb,var(--bib-feast-accent) 15%,transparent);cursor:pointer;padding:10px var(--sp-2xl)}.bib-feast-card:hover{background:color-mix(in srgb,var(--bib-feast-accent) 12%,transparent);border-color:color-mix(in srgb,var(--bib-feast-accent) 28%,transparent)}.bib-feast-icon{font-size:var(--fs-6xl);flex-shrink:0;line-height:1;margin-top:1px;color:var(--bib-feast-accent)}.bib-feast-info{flex:1;min-width:0}.bib-feast-name{font-family:Cormorant Garamond,serif;font-style:italic;font-size:var(--fs-6xl);font-weight:400;color:var(--bib-feast-accent);letter-spacing:.02em}.bib-feast-context{font-size:var(--fs-sm);color:var(--text-dim);margin-top:var(--sp-sm);line-height:1.5}.bib-christian-divider{font-size:var(--fs-xs);letter-spacing:.18em;text-transform:uppercase;color:var(--text-dim);margin:10px 0 var(--sp-md);padding-top:var(--sp-lg);border-top:1px solid var(--border)}.bib-christian-card{background:color-mix(in srgb,var(--bib-christian-accent) 6%,transparent);border-color:color-mix(in srgb,var(--bib-christian-accent) 15%,transparent);padding:10px var(--sp-2xl)}.bib-christian-card:hover{background:color-mix(in srgb,var(--bib-christian-accent) 12%,transparent);border-color:color-mix(in srgb,var(--bib-christian-accent) 28%,transparent)}.bib-christian-icon{font-size:var(--fs-6xl);flex-shrink:0;line-height:1;margin-top:1px;color:var(--bib-christian-accent)}.bib-christian-name{font-family:Cormorant Garamond,serif;font-style:italic;font-size:var(--fs-6xl);font-weight:400;color:var(--bib-christian-accent);letter-spacing:.02em}.bib-rest-card{background:color-mix(in srgb,var(--bib-rest-accent) 6%,transparent);border-color:color-mix(in srgb,var(--bib-rest-accent) 15%,transparent);padding:10px var(--sp-2xl)}.bib-rest-card:hover{background:color-mix(in srgb,var(--bib-rest-accent) 12%,transparent);border-color:color-mix(in srgb,var(--bib-rest-accent) 28%,transparent)}.bib-rest-icon{font-size:18px;flex-shrink:0;line-height:1;margin-top:1px;color:var(--bib-rest-accent)}.bib-rest-name{font-family:Cormorant Garamond,serif;font-style:italic;font-size:var(--fs-7xl);font-weight:400;color:var(--bib-rest-accent);letter-spacing:.02em}.bib-rest-context{font-size:var(--fs-sm);color:var(--text-dim);margin-top:var(--sp-sm);line-height:1.5}.bib-islamic-divider{font-size:var(--fs-xs);letter-spacing:.18em;text-transform:uppercase;color:var(--text-dim);margin:10px 0 var(--sp-md);padding-top:var(--sp-lg);border-top:1px solid var(--border)}.bib-islamic-card{background:color-mix(in srgb,var(--bib-islamic-accent) 6%,transparent);border-color:color-mix(in srgb,var(--bib-islamic-accent) 15%,transparent);padding:10px var(--sp-2xl)}.bib-islamic-card:hover{background:color-mix(in srgb,var(--bib-islamic-accent) 12%,transparent);border-color:color-mix(in srgb,var(--bib-islamic-accent) 28%,transparent)}.bib-islamic-icon{font-size:var(--fs-6xl);flex-shrink:0;line-height:1;margin-top:1px;color:var(--bib-islamic-accent)}.bib-islamic-name{font-family:Cormorant Garamond,serif;font-style:italic;font-size:var(--fs-6xl);font-weight:400;color:var(--bib-islamic-accent);letter-spacing:.02em}.bib-season-name{font-family:Cormorant Garamond,serif;font-style:italic;font-size:var(--fs-6xl);font-weight:400;color:var(--bib-season-accent);letter-spacing:.02em}.bib-season-card{background:color-mix(in srgb,var(--bib-season-accent) 6%,transparent);border-color:color-mix(in srgb,var(--bib-season-accent) 15%,transparent);padding:10px var(--sp-2xl)}.bib-season-card:hover{background:color-mix(in srgb,var(--bib-season-accent) 12%,transparent);border-color:color-mix(in srgb,var(--bib-season-accent) 28%,transparent)}.top-time-display{position:fixed;top:calc(20px + env(safe-area-inset-top,0));left:80px;right:80px;text-align:center;z-index:100;pointer-events:none;contain:layout paint}.top-date-main{font-family:DM Mono,monospace;font-size:var(--fs-3xl);font-weight:400;color:var(--date-display-text);letter-spacing:.08em;line-height:1.4}.top-date-utc{color:var(--time-display-utc)}.top-date-local{color:var(--time-display-local)}.top-henoch{font-family:DM Mono,monospace;font-size:var(--fs-lg);color:var(--top-enoch-text);letter-spacing:.06em;text-transform:uppercase;margin-top:var(--sp-sm)}.top-solar{font-family:DM Mono,monospace;font-size:var(--fs-lg);color:var(--top-solar-text);letter-spacing:.04em;margin-top:2px}.solar-time-label{color:var(--top-solar-label)}.solar-noon-label,.eot-label{color:var(--top-solar-text)}.lon-label{color:var(--time-display-utc)}.lunar-time-label{color:var(--tide-zoom-active-border)}.lunar-transit-label{color:var(--time-display-local)}.lunar-shift-label{color:var(--time-display-utc)}.top-tide{font-family:DM Mono,monospace;font-size:var(--fs-lg);color:#aac8f0cc;letter-spacing:.04em;margin-top:2px}.tide-height-label{color:var(--tide-zoom-active-border)}.tide-spring-neap-label,.tide-next-high-label,.tide-next-low-label{color:var(--text-dim)}.lon-display{font-family:DM Mono,monospace;font-size:.72em;color:#b4c8e673;margin-top:2px;letter-spacing:.03em}.bib-strip{display:none;align-items:center;gap:var(--sp-lg);padding:23px 39px;z-index:120;max-width:calc(100vw - 24px);overflow-x:auto;-webkit-overflow-scrolling:touch;cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent;scrollbar-width:none}@media(min-width:640px){.bib-strip{display:none!important}}.bib-strip::-webkit-scrollbar{display:none}.bib-strip.has-events{display:flex}.bib-pill{flex-shrink:0;padding:5px 16px;border-radius:var(--radius-3xl);font-size:var(--fs-base);font-weight:400;letter-spacing:.02em;white-space:nowrap;pointer-events:none}.bib-pill-jewish{background:color-mix(in srgb,var(--bib-feast-accent) 14%,transparent);border:1px solid color-mix(in srgb,var(--bib-feast-accent) 30%,transparent);color:var(--bib-feast-accent)}.bib-pill-christian{background:color-mix(in srgb,var(--bib-christian-accent) 14%,transparent);border:1px solid color-mix(in srgb,var(--bib-christian-accent) 30%,transparent);color:var(--bib-christian-accent)}.bib-pill-islamic{background:color-mix(in srgb,var(--bib-islamic-accent) 14%,transparent);border:1px solid color-mix(in srgb,var(--bib-islamic-accent) 30%,transparent);color:var(--bib-islamic-accent)}.bib-pill-rest{background:color-mix(in srgb,var(--bib-rest-accent) 14%,transparent);border:1px solid color-mix(in srgb,var(--bib-rest-accent) 30%,transparent);color:var(--bib-rest-accent)}.bib-pill-tarena{background:color-mix(in srgb,var(--enoch-tarena-text) 14%,transparent);border:1px solid color-mix(in srgb,var(--enoch-tarena-text) 30%,transparent);color:var(--enoch-tarena-text);font-family:DM Mono,monospace}.bib-pill-event{background:var(--bib-event-card-bg);border:1px solid var(--border);color:var(--bib-event-ref)}.bib-pill-season{background:color-mix(in srgb,var(--bib-season-accent) 14%,transparent);border:1px solid color-mix(in srgb,var(--bib-season-accent) 30%,transparent);color:var(--bib-season-accent)}.bib-events-panel.bib-mobile-visible{display:block;position:fixed;top:50%;left:50%;right:auto;transform:translate(-50%,-50%);width:min(600px,97vw);max-height:65vh;overflow-y:auto;border-radius:var(--radius-3xl);padding:20px;z-index:400;box-shadow:0 8px 40px #000000b3;animation:bibFadeIn .2s ease}@keyframes bibFadeIn{0%{opacity:0;transform:translate(-50%,-48%) scale(.96)}to{opacity:1;transform:translate(-50%,-50%) scale(1)}}.bib-mobile-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--modal-backdrop);z-index:399;animation:bibBackdropIn .2s ease}@keyframes bibBackdropIn{0%{opacity:0}to{opacity:1}}.bib-mobile-close{position:absolute;top:20px;right:25px;width:38px;height:38px;border-radius:50%;background:var(--btn-bg);border:1px solid var(--border);color:var(--text-dim);font-size:var(--fs-6xl);display:flex;align-items:center;justify-content:center;cursor:pointer;transition:background .15s,color .15s;z-index:3}.bib-mobile-close:hover{background:var(--btn-hover-bg);color:var(--text)}@media(min-width:640px)and (max-width:1024px){:root{--panel-w: 240px;--overlay-btn-w: 40px;--overlay-btn-h: 40px;--bib-panel-w: min(260px, 30vw);--alert-panel-min-w: 300px;--alert-panel-max-w: 500px}.bib-events-panel{top:70px;right:var(--sp-md)}.overlay-btn svg{width:18px;height:18px}}@media(min-width:640px)and (max-width:1024px)and (orientation:landscape){:root{--panel-w: 200px;--fs-2xs: 6.5px;--fs-xs: 7px;--fs-sm: 7.5px;--fs-base: 8px;--fs-md: 8.5px;--fs-lg: 9px;--fs-xl: 9.5px;--fs-2xl: 10px;--fs-3xl: 11px;--fs-4xl: 12px;--fs-5xl: 13px;--fs-6xl: 14px;--fs-7xl: 15px;--fs-8xl: 18px;--sp-md: 5px;--sp-lg: 6px;--sp-xl: 7px;--sp-2xl: 10px;--sp-3xl: 12px;--sp-4xl: 13px;--sp-5xl: 15px;--sp-6xl: 18px}#panel{padding:var(--sp-4xl) var(--sp-lg) var(--sp-lg)}.chat-panel{width:min(320px,35vw)}.tide-panel{width:260px;top:60px}.top-time-display{left:50px;right:50px}.overlay-toggle{width:44px;height:44px}.date-modal-box{width:min(380px,90vw)}}@media(max-width:639px){:root{--panel-w: 100vw;--overlay-btn-w: 32px;--overlay-btn-h: 32px;--alert-panel-min-w: 0;--alert-panel-max-w: calc(100vw - 24px) ;--bib-panel-w: min(600px, 97vw)}#panel{width:100vw;z-index:350;padding:calc(var(--sp-6xl) + env(safe-area-inset-top,0)) var(--sp-4xl) calc(var(--sp-4xl) + env(safe-area-inset-bottom,0))}#panel.hidden{transform:translate(-100vw);pointer-events:none}.panel-close{display:flex;top:calc(14px + env(safe-area-inset-top,0));right:14px}.btn{min-height:36px}.toggle-item{min-height:36px;padding:var(--sp-xs) 0}.btn-go,.alert-config select{min-height:36px}.dso-master-btn{min-height:36px;padding:var(--sp-md) var(--sp-xl)}.dso-path-btn{min-height:36px;padding:var(--sp-md) var(--sp-lg)}.dso-row{min-height:36px;padding:var(--sp-md) var(--sp-sm)}.date-modal-btn,.step-option,.alert-log-btn{min-height:36px}.log-btn-sm{min-height:36px;padding:var(--sp-xs) var(--sp-xl)}.overlay-toggle{width:44px;height:44px;background:transparent;border:none;box-shadow:none;z-index:302;top:env(safe-area-inset-top,0)}.overlay-toggle.left{left:env(safe-area-inset-left,0)}.overlay-toggle:hover{transform:none;background:transparent;box-shadow:none}.overlay-toggle svg{width:22px;height:22px}.overlay-toggle svg line{stroke:#a0b9d299}#panel:not(.hidden)~#overlayLeftToggle{opacity:0;pointer-events:none;z-index:-1}.overlay-controls{bottom:auto;top:calc(var(--vh, 1vh) * 100 - env(safe-area-inset-bottom,0px) - 128px);left:12px;right:12px;transform:none;width:auto;padding:0;gap:0;z-index:300;flex-direction:column;max-width:none;background:#0a161cf7;border:1px solid var(--border);border-radius:var(--radius-3xl);box-shadow:0 -2px 16px #0006;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}@supports not (backdrop-filter: blur(1px)){.overlay-controls{background:#0a161cfc}}.overlay-row{display:flex;gap:4px;padding:5px 10px;justify-content:center;align-items:center;width:100%}.overlay-row+.overlay-row{border-top:1px solid var(--border);padding-bottom:5px}.overlay-btn{border-radius:var(--radius-lg);flex-shrink:0}.overlay-btn svg{width:14px;height:14px}.overlay-separator{margin:0;width:1px;height:18px;align-self:center;flex-shrink:0}.step-indicator{font-size:7.5px;min-width:22px;padding:0 2px}.time-display{display:none}.top-time-display{top:calc(44px + env(safe-area-inset-top,0));left:var(--sp-lg);right:var(--sp-lg);transform:none}.top-henoch{margin-top:4px}#seasonBar{bottom:auto;top:calc(var(--vh, 1vh) * 100 - env(safe-area-inset-bottom,0px) - 155px);left:50%;right:auto;transform:translate(-50%);font-size:var(--fs-xs);padding:var(--sp-sm) var(--sp-2xl);position:fixed;white-space:nowrap}.date-modal-box{width:min(420px,97vw)}.date-modal-input{font-size:var(--fs-3xl);padding:10px var(--sp-2xl)}.date-modal-field-day,.date-modal-field-hm{width:52px}.year-step-btn{width:36px;min-height:40px}.date-modal-btn{padding:10px var(--sp-2xl);font-size:var(--fs-lg)}.date-modal-title{font-size:var(--fs-4xl)}.log-box{max-height:80vh}.step-selector{min-width:200px}.step-option{font-size:var(--fs-lg)}#alertPanel{width:calc(100vw - 24px);left:12px;right:12px;transform:none;bottom:auto;top:calc(var(--vh, 1vh) * 100 - env(safe-area-inset-bottom,0px) - 128px)}.tide-panel{bottom:auto;top:calc(var(--vh, 1vh) * 100 - env(safe-area-inset-bottom,0px) - 288px);right:8px;left:8px;width:auto;max-width:none;border-radius:var(--radius-xl)}.bib-events-panel{display:none}.bib-events-panel.bib-mobile-visible{display:block}.bib-strip{position:fixed;bottom:auto;top:calc(var(--vh, 1vh) * 100 - env(safe-area-inset-bottom,0px) - 182px);left:50%;transform:translate(-50%);padding:var(--sp-sm) var(--sp-lg)}.bib-pill{padding:var(--sp-xs) var(--sp-md);font-size:var(--fs-sm)}.bib-events-title{font-size:var(--fs-base);padding:4px 44px 16px 14px;margin-bottom:var(--sp-md);display:flex;align-items:center}.bib-events-list{gap:var(--sp-md)}.bib-event-card,.bib-feast-card,.bib-christian-card,.bib-rest-card,.bib-islamic-card{padding:var(--sp-md) var(--sp-lg)}.bib-feast-name,.bib-rest-name,.bib-christian-name,.bib-islamic-name{font-size:var(--fs-5xl)}.bib-event-ref{font-size:var(--fs-lg)}.bib-event-context,.bib-feast-context,.bib-rest-context{font-size:var(--fs-sm)}.bib-christian-divider,.bib-islamic-divider{font-size:var(--fs-xs)}.share-toast{bottom:auto;top:calc(var(--vh, 1vh) * 100 - env(safe-area-inset-bottom,0px) - 85px)}.tt-name{font-size:var(--fs-5xl)}.tt-row{font-size:var(--fs-md)}@supports (padding-bottom: env(safe-area-inset-bottom)){.bib-strip{top:calc(var(--vh, 1vh) * 100 - env(safe-area-inset-bottom) - 182px)}}#credit{bottom:auto;top:calc(var(--vh, 1vh) * 100 - env(safe-area-inset-bottom,0px) - 25px);left:0;right:0;transform:none;text-align:center;font-size:8px;z-index:50}.layer-toggles{max-height:none;grid-template-columns:repeat(2,1fr)}.date-modal-box{max-height:88vh;max-height:min(88vh,calc(100dvh - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px)))}.donation-modal-box{width:min(420px,97vw)}}.chat-panel{position:fixed;top:80px;right:16px;width:min(380px,40vw);max-height:calc(100vh - 160px);max-height:calc(100dvh - 160px);background:var(--chat-panel-bg);border:1px solid var(--chat-panel-border);border-radius:var(--radius-2xl);box-shadow:0 4px 24px #00000080;display:flex;flex-direction:column;z-index:250;transition:opacity .25s cubic-bezier(.4,0,.2,1),transform .25s cubic-bezier(.4,0,.2,1),width .3s cubic-bezier(.4,0,.2,1);pointer-events:auto;overflow:hidden}.chat-panel.hidden{opacity:0;transform:translate(20px);pointer-events:none}.chat-panel.visible{opacity:1;transform:translate(0)}.chat-panel.compact{width:min(280px,30vw)}.chat-sheet-handle,.chat-peek-bar{display:none}.chat-compact-toggle{background:none;border:none;color:var(--text-dim);font-size:var(--fs-2xl);cursor:pointer;padding:0 var(--sp-xs);line-height:1;transition:color .15s}.chat-compact-toggle:hover{color:var(--text)}.chat-suggestions{display:none;flex-wrap:wrap;gap:8px;padding:var(--sp-sm) var(--sp-lg);overflow-x:auto}.chat-suggestion-btn{background:#7896be1f;border:1px solid rgba(120,150,190,.2);border-radius:20px;color:var(--text-dim);cursor:pointer;font-family:DM Mono,monospace;font-size:var(--fs-sm);padding:6px 14px;transition:background .15s,border-color .15s,color .15s;white-space:nowrap}.chat-suggestions-inline{display:flex;flex-wrap:wrap;gap:8px;padding:var(--sp-sm) 0}.chat-suggestions-inline .chat-suggestion-btn{background:#7896be1f;border:1px solid rgba(120,150,190,.2);border-radius:20px;color:var(--text-dim);cursor:pointer;font-family:DM Mono,monospace;font-size:var(--fs-sm);padding:6px 14px;transition:background .15s,border-color .15s,color .15s;white-space:nowrap}.chat-suggestions-inline .chat-suggestion-btn:hover,.chat-suggestions-inline .chat-suggestion-btn:focus{background:#7896be38;border-color:#7896be66;color:var(--text)}@media(min-width:640px){body.chat-open .bib-events-panel{display:none!important}}.chat-header{display:flex;align-items:center;justify-content:space-between;padding:var(--sp-md) var(--sp-lg);border-bottom:1px solid var(--border);flex-shrink:0}.chat-title{font-family:Cormorant Garamond,serif;font-size:var(--fs-7xl);color:var(--text);letter-spacing:.02em}.chat-title-group{display:flex;align-items:baseline;gap:var(--sp-sm)}.chat-beta-badge{font-family:var(--font-ui);font-size:var(--fs-xs);font-weight:600;color:var(--accent);background:color-mix(in srgb,var(--accent) 15%,transparent);border:1px solid color-mix(in srgb,var(--accent) 40%,transparent);border-radius:4px;padding:1px 6px;letter-spacing:.06em;text-transform:uppercase;line-height:1}.chat-disclaimer{font-family:var(--font-ui);font-size:var(--fs-xs);color:var(--text-dim);padding:0 var(--sp-lg) var(--sp-sm);line-height:1.4;flex-shrink:0}.chat-close{background:none;border:none;color:var(--text-dim);font-size:var(--fs-5xl);cursor:pointer;padding:0 var(--sp-xs);line-height:1;transition:color .15s}.chat-close:hover{color:var(--text)}.chat-messages{flex:1;min-height:0;max-height:calc(100vh - 220px);max-height:calc(100dvh - 220px);overflow-y:auto;padding:var(--sp-md);display:flex;flex-direction:column;gap:var(--sp-sm);-webkit-overflow-scrolling:touch}.chat-msg{max-width:88%;padding:var(--sp-md) var(--sp-lg);border-radius:var(--radius-lg);font-size:var(--fs-lg);line-height:1.55;word-wrap:break-word}.chat-msg-user{align-self:flex-end;background:var(--chat-msg-user-bg);color:var(--text)}.chat-msg-assistant{align-self:flex-start;background:var(--chat-msg-assistant-bg);color:var(--text)}.reasoning-wait{font-size:var(--fs-sm);color:var(--text-dim);opacity:.7;font-style:italic;padding:.4em 0;animation:reasoning-pulse 2s ease-in-out infinite}@keyframes reasoning-pulse{0%,to{opacity:.5}50%{opacity:.9}}.chat-msg-assistant strong,.chat-msg-assistant b{color:var(--chat-msg-assistant-bold);font-weight:600}.chat-msg-assistant em,.chat-msg-assistant i{color:var(--text-dim);font-style:italic}.chat-msg-assistant p{margin:.3em 0}.chat-msg-assistant p+p{margin-top:.5em}.chat-msg-assistant h1,.chat-msg-assistant h2,.chat-msg-assistant h3{margin:.6em 0 .2em;font-weight:600;color:var(--chat-msg-assistant-bold)}.chat-msg-assistant hr{border:none;border-top:1px solid var(--border);margin:.6em 0}.chat-msg-assistant ul,.chat-msg-assistant ol{margin:var(--sp-md) 0;padding-left:var(--sp-xl)}.chat-msg-assistant ul{list-style:disc}.chat-msg-assistant ol{list-style:decimal}.chat-msg-assistant li{margin:var(--sp-xs) 0;line-height:1.5}.chat-msg-assistant table{border-collapse:collapse;margin:var(--sp-sm) 0;font-size:var(--fs-base);width:100%;display:block;overflow-x:auto;-webkit-overflow-scrolling:touch}.chat-msg-assistant thead{background:var(--chat-msg-user-bg)}.chat-msg-assistant th,.chat-msg-assistant td{border:1px solid var(--border);padding:2px 6px;text-align:left;white-space:nowrap}.chat-msg-assistant th{color:var(--chat-msg-assistant-bold);font-weight:600;font-size:.9em;letter-spacing:.02em}.chat-msg-assistant td{color:var(--text)}.chat-msg-assistant tr:nth-child(2n) td{background:var(--chat-msg-assistant-bg)}.chat-msg-assistant h1,.chat-msg-assistant h2,.chat-msg-assistant h3{color:#c8dcfff2;margin:var(--sp-lg) 0 var(--sp-sm);font-weight:600}.chat-msg-assistant h1{font-size:1.15em}.chat-msg-assistant h2{font-size:1.08em}.chat-msg-assistant h3{font-size:1em}.chat-msg-assistant hr{border:none;border-top:1px solid rgba(120,150,190,.25);margin:var(--sp-md) 0}.chat-msg-assistant p{margin:var(--sp-sm) 0}.chat-msg-action{align-self:center;font-size:var(--fs-base);color:var(--text-dim);padding:var(--sp-2xs) var(--sp-sm);font-style:italic}.chat-typing{display:flex;gap:4px;align-items:center;padding:var(--sp-sm) var(--sp-md)}.chat-typing span{width:6px;height:6px;background:var(--text-dim);border-radius:50%;animation:chat-typing-bounce 1.4s infinite ease-in-out}.chat-typing span:nth-child(2){animation-delay:.2s}.chat-typing span:nth-child(3){animation-delay:.4s}@keyframes chat-typing-bounce{0%,80%,to{transform:scale(.6);opacity:.4}40%{transform:scale(1);opacity:1}}.chat-input-row{display:flex;gap:var(--sp-sm);padding:var(--sp-sm) var(--sp-md);border-top:1px solid var(--border);flex-shrink:0}.chat-input{flex:1;background:var(--chat-input-bg);border:1px solid var(--chat-input-border);border-radius:var(--radius-lg);color:var(--text);font-family:DM Mono,monospace;font-size:var(--fs-lg);padding:var(--sp-sm) var(--sp-md);outline:none;transition:border-color .15s}.chat-input::placeholder{color:var(--text-dim)}.chat-input:focus{border-color:var(--chat-input-focus-border)}.chat-send{background:var(--chat-send-bg);border:1px solid var(--chat-send-border);border-radius:var(--radius-lg);color:var(--text);cursor:pointer;padding:var(--sp-sm);display:flex;align-items:center;justify-content:center;transition:background .15s;min-width:36px;min-height:36px}.chat-send:hover{background:var(--chat-send-hover-bg)}.chat-debug-toggle{background:var(--chat-send-bg);border:1px solid var(--chat-send-border);border-radius:var(--radius-lg);color:var(--text-dim);cursor:pointer;padding:0 8px;font-size:14px;line-height:36px;min-height:36px;transition:background .15s}.chat-debug-toggle:hover,.chat-debug-toggle.active{background:var(--chat-send-hover-bg);color:var(--text)}.chat-debug{border-top:1px solid var(--border);background:var(--modal-card-bg);display:flex;flex-direction:column;max-height:40%;min-height:0;flex-shrink:1;overflow:hidden}.chat-debug-bar{display:flex;align-items:center;justify-content:space-between;padding:4px 8px;font-size:11px;color:var(--text-dim);border-bottom:1px solid var(--border);flex-shrink:0}.chat-debug-copy{background:none;border:none;color:var(--text-dim);cursor:pointer;font-size:12px;padding:2px 4px}.chat-debug-copy:hover{color:var(--text)}.chat-debug-content{margin:0;padding:6px 8px;font-size:10px;line-height:1.4;font-family:DM Mono,monospace;color:var(--chat-debug-content);overflow:auto;flex:1;white-space:pre-wrap;word-break:break-all}.chat-send.chat-stop{background:#c864504d}.chat-send.chat-stop:hover{background:#c8645080}#chatToggle.active{background:var(--chat-send-bg)}@media(max-width:639px){.chat-panel{--chat-fs-base: 14px;--chat-fs-sm: 12px;--chat-fs-lg: 16px;position:fixed;top:auto;right:0;left:0;bottom:0;width:100%;height:auto;max-height:100vh;max-height:100dvh;border-radius:var(--radius-2xl) var(--radius-2xl) 0 0;z-index:400;background:var(--chat-panel-bg);transform:translateY(100%);transition:transform .35s cubic-bezier(.32,.72,0,1);will-change:transform;overscroll-behavior:contain}.chat-panel.snap-peek{transform:translateY(calc(100% - 60px - env(safe-area-inset-bottom,0px)))}.chat-panel.snap-half{transform:translateY(0);max-height:60vh;max-height:60dvh}.chat-panel.snap-full{transform:translateY(0);max-height:90vh;max-height:90dvh}.chat-panel.snap-full.keyboard-visible{max-height:100vh;max-height:100dvh}.chat-panel.hidden{transform:translateY(100%)}.chat-panel.visible{transform:translateY(0)}.chat-sheet-handle{display:flex;justify-content:center;align-items:center;padding:10px 0 4px;cursor:grab;flex-shrink:0;touch-action:none}.chat-sheet-handle:active{cursor:grabbing}.chat-sheet-handle-bar{width:36px;height:4px;background:var(--text-dim);border-radius:2px;opacity:.5}.chat-peek-bar{display:flex;align-items:center;padding:0 var(--sp-lg) 10px;font-size:var(--chat-fs-sm);color:var(--text-dim);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex-shrink:0}.chat-panel.snap-peek .chat-header,.chat-panel.snap-peek .chat-disclaimer,.chat-panel.snap-peek .chat-messages{display:none}.chat-panel.snap-peek .chat-debug{display:none!important}.chat-panel.snap-peek .chat-input-row,.chat-panel.snap-peek .chat-suggestions,.chat-panel.snap-half .chat-peek-bar,.chat-panel.snap-full .chat-peek-bar{display:none}.chat-header{flex-shrink:0;padding-top:calc(0px + env(safe-area-inset-top,0));padding-bottom:var(--sp-md)}.chat-close{font-size:20px;min-width:44px;min-height:44px;display:flex;align-items:center;justify-content:center}.chat-compact-toggle{display:none}.chat-messages{flex:1;min-height:0;max-height:none;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:var(--sp-lg) var(--sp-2xl)}.chat-input-row{flex-shrink:0;padding-bottom:calc(var(--sp-sm) + env(safe-area-inset-bottom,0));padding-left:var(--sp-lg);padding-right:var(--sp-lg);background:var(--chat-panel-bg)}.chat-msg{font-size:var(--chat-fs-base);padding:var(--sp-lg) var(--sp-2xl);line-height:1.6}.chat-msg-user,.chat-msg-assistant{font-size:var(--chat-fs-base)}.chat-msg-assistant p{margin:.4em 0}.chat-msg-assistant h1{font-size:1.3em}.chat-msg-assistant h2{font-size:1.15em}.chat-msg-assistant h3{font-size:1em}.chat-msg-assistant table{font-size:13px}.chat-msg-assistant th,.chat-msg-assistant td{padding:4px 8px}.chat-msg-action{font-size:var(--chat-fs-sm)}.chat-input{font-size:var(--chat-fs-lg)}.chat-suggestions{gap:6px;padding:var(--sp-sm) var(--sp-lg)}.chat-suggestion-btn{font-size:13px;padding:8px 16px;min-height:36px}.chat-suggestions-inline{gap:6px}.chat-suggestions-inline .chat-suggestion-btn{font-size:13px;padding:8px 16px;min-height:36px}body.chat-open .overlay-controls,body.chat-open .overlay-toggle{transition:opacity .25s,pointer-events .25s}body.chat-open .overlay-controls,body.chat-open .overlay-toggle{opacity:.4;pointer-events:auto}body.snap-full .overlay-controls,body.snap-full .overlay-toggle{opacity:0;pointer-events:none}}@media(display-mode:standalone){#seasonBar,.tide-panel{bottom:calc(130px + env(safe-area-inset-bottom,0))}}#credit{position:fixed;bottom:8px;left:10px;font:300 10px/1 DM Mono,monospace;color:var(--text-dim);opacity:.4;pointer-events:none;-webkit-user-select:none;user-select:none;z-index:50}@media(display-mode:standalone)and (max-width:639px){.overlay-controls{top:calc(var(--vh, 1vh) * 100 - env(safe-area-inset-bottom,0px) - 128px)}.overlay-row+.overlay-row{padding-bottom:5px}.bib-strip{top:calc(var(--vh, 1vh) * 100 - env(safe-area-inset-bottom,0px) - 182px)}#seasonBar{top:calc(var(--vh, 1vh) * 100 - env(safe-area-inset-bottom,0px) - 155px)}.tide-panel{top:calc(var(--vh, 1vh) * 100 - env(safe-area-inset-bottom,0px) - 288px)}#credit{top:calc(var(--vh, 1vh) * 100 - env(safe-area-inset-bottom,0px) - 25px);left:0;right:0;transform:none;text-align:center}}#observer-marker{position:fixed;left:0;top:0;pointer-events:none;z-index:10;will-change:transform}.observer-triangle{position:absolute;left:-7px;top:-10px;filter:drop-shadow(0 0 4px var(--observer-glow))}.observer-label{position:absolute;left:16px;top:-2px;color:var(--observer-label);font:600 9px DM Mono,monospace;white-space:nowrap;background:var(--observer-label-bg);padding:2px 6px;border-radius:3px;border:1px solid var(--observer-pulse-border);animation:observer-label-fade 4s ease forwards}.observer-pulse{position:absolute;left:-3px;top:-3px;width:6px;height:6px;border-radius:50%;border:1.5px solid var(--observer-pulse-border);animation:observer-pulse-anim 2s ease-out infinite}.observer-pulse-delayed{animation-delay:1s}@keyframes observer-pulse-anim{0%{transform:scale(1);opacity:.6}to{transform:scale(5);opacity:0}}@keyframes observer-label-fade{0%,70%{opacity:1}to{opacity:0}}
