:root{--ink-primary: #1c1a17;--ink-secondary: #4a463f;--ink-muted: #8a8477;--ink-inverse: #ffffff;--page-bg: #e9e2d3;--panel-bg: rgba(248, 244, 236, .93);--panel-bg-solid: #f7f2e9;--panel-blur: 4px;--panel-border: rgba(28, 26, 23, .16);--panel-shadow: 0 2px 12px rgba(50, 38, 14, .14);--panel-radius: 4px;--scrollbar-track: rgba(248, 244, 236, .4);--scrollbar-thumb: rgba(140, 47, 34, .48);--scrollbar-thumb-hover: rgba(140, 47, 34, .68);--scrollbar-thumb-active: rgba(112, 38, 27, .86);--terrain-light: #efe7d5;--terrain-dark: #b3a488;--terrain-opacity: .92;--province-stroke: rgba(60, 54, 44, .1);--province-stroke-width: .7px;--province-hover-stroke: rgba(30, 26, 20, .85);--river-stroke: #6b93a6;--lake-fill: #cdd9d3;--map-outside: transparent;--ramp-0: #e8d3a0;--ramp-25: #d9a24e;--ramp-50: #b5622f;--ramp-75: #7f2c1f;--ramp-100: #43140f;--no-data: #b3aa97;--bubble-stroke: rgba(10, 14, 20, .72);--bubble-dim-opacity: .22;--accent: #8c2f22;--accent-soft: rgba(140, 47, 34, .14);--accent-strong: #70261b;--warning-bg: #fff6e0;--warning-border: #eda100;--gridline: #d8cfbd;--baseline: #b9ae98;--focus-ring: 0 0 0 2px rgba(140, 47, 34, .45);--font-sans: "Spline Sans", "Noto Sans SC", system-ui, -apple-system, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Noto Sans CJK SC", sans-serif;--font-serif: "Noto Serif CJK SC", "Noto Serif SC", "Source Han Serif SC", "Songti SC", "STSong", "SimSun", serif;--font-body: var(--font-sans);--font-heading: var(--font-serif);--fs-xs: 11.6px;--fs-sm: 13.1px;--fs-md: 14.7px;--fs-lg: 16.8px;--fs-title: 18.9px;--gap-xs: 4px;--gap-sm: 8px;--gap-md: 12px;--gap-lg: 18px;--tap-target: 44px;--panel-margin: 14px;--dur-fast: .16s;--dur-med: .32s;--ease: cubic-bezier(.25, .8, .3, 1)}:root.font-test-headings-serif,body.font-test-headings-serif,#app.font-test-headings-serif{--font-heading: var(--font-serif)}:root.font-test-body-serif,body.font-test-body-serif,#app.font-test-body-serif{--font-body: var(--font-serif)}:root.font-test-all-serif,body.font-test-all-serif,#app.font-test-all-serif{--font-body: var(--font-serif);--font-heading: var(--font-serif)}:root.font-test-sans,body.font-test-sans,#app.font-test-sans{--font-body: var(--font-sans);--font-heading: var(--font-sans)}*{box-sizing:border-box}html,body{margin:0;padding:0;height:100%;overflow:hidden;font-family:var(--font-body);color:var(--ink-primary);background:var(--page-bg);-webkit-font-smoothing:antialiased}#app{position:fixed;inset:0;--app-viewport-height: 100vh}@supports (height: 100dvh){#app{--app-viewport-height: 100dvh}}.map-stage{position:absolute;inset:0;overflow:hidden}.terrain-canvas,.map-svg{position:absolute;inset:0;width:100%;height:100%}.map-svg{touch-action:none;cursor:grab}.map-svg:active{cursor:grabbing}.panel{position:absolute;background:var(--panel-bg);backdrop-filter:blur(var(--panel-blur));-webkit-backdrop-filter:blur(var(--panel-blur));border:1px solid var(--panel-border);border-radius:var(--panel-radius);box-shadow:var(--panel-shadow)}.left-col{position:absolute;top:calc(var(--panel-margin) + env(safe-area-inset-top,0px));left:calc(var(--panel-margin) + env(safe-area-inset-left,0px));width:min(304px,calc(100vw - 2 * var(--panel-margin)));max-height:calc(100vh - 200px - 2 * var(--panel-margin));display:flex;flex-direction:column;gap:10px;z-index:10;pointer-events:none}.left-col>*{pointer-events:auto}.topbar-title{position:static;display:flex;align-items:center;gap:var(--gap-sm);padding:10px 12px 10px 10px}.topbar-title .topbar-title-text{flex:1;min-width:0}.topbar-actions{position:absolute;top:calc(var(--panel-margin) + env(safe-area-inset-top,0px));right:calc(var(--panel-margin) + env(safe-area-inset-right,0px));display:flex;flex-direction:column;gap:4px;padding:0;z-index:40}.sidebar{position:static;width:100%;min-height:0;overflow-y:auto;padding:var(--gap-md) var(--gap-md);transition:transform var(--dur-med) var(--ease),opacity var(--dur-med) var(--ease),visibility 0s linear}.sidebar.collapsed{transform:translate(calc(-100% - 2 * var(--panel-margin)));opacity:0;visibility:hidden;pointer-events:none;transition:transform var(--dur-med) var(--ease),opacity var(--dur-med) var(--ease),visibility 0s linear var(--dur-med)}.timeline-panel{left:50%;transform:translate(-50%);bottom:calc(var(--panel-margin) + env(safe-area-inset-bottom,0px));width:min(920px,calc(100vw - 2 * var(--panel-margin)));padding:var(--gap-sm) var(--gap-md);z-index:30;transition:height var(--dur-med) var(--ease)}.detail-card{right:calc(var(--panel-margin) + env(safe-area-inset-right,0px));top:calc(116px + env(safe-area-inset-top,0px));width:min(360px,calc(100vw - 2 * var(--panel-margin)));max-height:calc(var(--app-viewport-height) - 300px);overflow-y:auto;padding:var(--gap-md) var(--gap-lg);z-index:20;transition:transform var(--dur-med) var(--ease),opacity var(--dur-med) var(--ease),visibility 0s linear}.detail-card.collapsed{transform:translate(calc(100% + 2 * var(--panel-margin) + env(safe-area-inset-right,0px)));opacity:0;visibility:hidden;pointer-events:none;transition:transform var(--dur-med) var(--ease),opacity var(--dur-med) var(--ease),visibility 0s linear var(--dur-med)}.panel-icon-btn.detail-toggle{top:calc(122px + env(safe-area-inset-top,0px));right:calc(var(--panel-margin) + env(safe-area-inset-right,0px) + 6px);left:auto;z-index:21;transition:right var(--dur-med) var(--ease),background var(--dur-fast) var(--ease)}.panel-icon-btn.detail-toggle.is-collapsed{right:calc(var(--panel-margin) + env(safe-area-inset-right,0px))}.modal-backdrop{position:fixed;inset:0;background:#0f192373;display:flex;align-items:center;justify-content:center;z-index:50;padding:calc(16px + env(safe-area-inset-top,0px)) calc(16px + env(safe-area-inset-right,0px)) calc(16px + env(safe-area-inset-bottom,0px)) calc(16px + env(safe-area-inset-left,0px))}.modal{background:var(--panel-bg-solid);border-radius:var(--panel-radius);box-shadow:var(--panel-shadow);width:min(720px,100%);max-height:100%;display:flex;flex-direction:column;overflow:hidden}.modal-body{overflow-y:auto;padding:0 var(--gap-lg) var(--gap-lg)}:where(.sidebar,.detail-card,.modal-body){scrollbar-color:var(--scrollbar-thumb) transparent;scrollbar-gutter:stable;scrollbar-width:thin}:where(.sidebar,.detail-card,.modal-body)::-webkit-scrollbar{width:11px;height:11px}:where(.sidebar,.detail-card,.modal-body)::-webkit-scrollbar-track{background:var(--scrollbar-track);border-radius:999px;margin:8px 0}:where(.sidebar,.detail-card,.modal-body)::-webkit-scrollbar-thumb{min-height:42px;border:3px solid transparent;border-radius:999px;background:linear-gradient(180deg,var(--scrollbar-thumb-hover),var(--scrollbar-thumb)) content-box}:where(.sidebar,.detail-card,.modal-body)::-webkit-scrollbar-thumb:hover{background:var(--scrollbar-thumb-hover) content-box}:where(.sidebar,.detail-card,.modal-body)::-webkit-scrollbar-thumb:active{background:var(--scrollbar-thumb-active) content-box}:where(.sidebar,.detail-card,.modal-body)::-webkit-scrollbar-corner{background:transparent}@media(max-width:760px){.left-col{width:min(var(--left-col-mobile-width, 312px),calc(100vw - 78px));max-height:calc(100vh - 230px)}.sidebar{max-height:46vh}.topbar-title{gap:6px;padding:8px 8px 8px 10px}.detail-card{--detail-mobile-top: calc(118px + env(safe-area-inset-top, 0px)) ;--detail-mobile-bottom-clearance: calc(188px + env(safe-area-inset-bottom, 0px)) ;top:var(--detail-mobile-top);width:min(300px,calc(100vw - 2 * var(--panel-margin)));max-height:calc(var(--app-viewport-height) - var(--detail-mobile-top) - var(--detail-mobile-bottom-clearance))}.panel-icon-btn.detail-toggle{top:calc(124px + env(safe-area-inset-top,0px))}.timeline-panel{width:calc(100vw - 2 * var(--panel-margin));padding:var(--gap-sm) 10px}}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-width:36px;min-height:36px;padding:6px 10px;border:1px solid var(--panel-border);border-radius:10px;background:transparent;color:var(--ink-primary);font:inherit;font-size:var(--fs-sm);cursor:pointer;transition:background var(--dur-fast) var(--ease)}.btn,.sidebar label.row,.sidebar .types-details summary,.qmark,.badge{-webkit-tap-highlight-color:transparent;touch-action:manipulation;user-select:none;-webkit-user-select:none}.btn:focus-visible{outline:none;box-shadow:var(--focus-ring)}.btn:disabled{opacity:.45;cursor:default;pointer-events:none}.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--ink-inverse)}@media(hover:hover){.btn:hover{background:var(--accent-soft)}.btn.primary:hover{background:var(--accent-strong)}.topbar-actions .btn:hover{background:var(--panel-bg-solid)}.sidebar label.row:hover{background:var(--accent-soft)}.timeline-head .reset-btn:not(:disabled):hover{background:var(--accent-strong)}.timeline-head .speed-option:hover{background:var(--accent-soft)}.timeline-head .speed-option[aria-selected=true]:hover{background:var(--accent-strong)}}.btn.round{border-radius:50%;width:36px;padding:0;font-size:var(--fs-md)}.app-title,.sidebar h3,.tooltip .tt-title,.timeline-head .window-label,.detail-card h2,.modal-head h2,.modal-body .readme h1,.modal-body .readme h2{font-family:var(--font-heading)}.panel-icon-btn{position:absolute;width:42px;height:42px;min-width:42px;min-height:42px;padding:0;border-radius:50%;background:var(--panel-bg);box-shadow:var(--panel-shadow);backdrop-filter:blur(var(--panel-blur));-webkit-backdrop-filter:blur(var(--panel-blur));color:var(--accent-strong);z-index:2}.side-toggle{top:var(--sidebar-toggle-top, 96px);left:var(--sidebar-toggle-expanded-left, 254px);transition:left var(--sidebar-toggle-travel-ms, .24s) var(--ease),background var(--dur-fast) var(--ease)}.side-toggle.is-collapsed{left:0}.side-toggle.is-opening{transition-delay:var(--sidebar-toggle-catchup-delay, 80ms),0s}.chevron-icon{display:block;width:18px;height:18px;overflow:visible}.chevron-icon path{fill:none;stroke:currentColor;stroke-width:2.45;stroke-linecap:round;stroke-linejoin:round}@media(pointer:coarse){.btn{min-width:var(--tap-target);min-height:var(--tap-target)}.sidebar label.row{padding:8px 4px}.sidebar input[type=radio],.sidebar input[type=checkbox]{width:18px;height:18px}}.app-title{margin:0;font-size:var(--fs-title);font-weight:650;line-height:1.25}.app-subtitle{margin:2px 0 0;font-size:var(--fs-xs);color:var(--ink-secondary)}.app-icon{flex:none;width:42px;height:42px;object-fit:contain}.topbar-actions .btn{width:42px;min-width:42px;height:42px;min-height:42px;padding:0;border-radius:10px;background:var(--panel-bg);box-shadow:var(--panel-shadow);backdrop-filter:blur(var(--panel-blur));-webkit-backdrop-filter:blur(var(--panel-blur))}.topbar-actions .help-btn{border-radius:50%;font-size:var(--fs-lg)}.sidebar h3{margin:var(--gap-md) 0 var(--gap-xs);font-size:var(--fs-xs);font-weight:650;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-muted)}.sidebar h3:first-child{margin-top:0}.sidebar label.row{display:flex;align-items:center;gap:var(--gap-sm);padding:5px 4px;border-radius:8px;font-size:var(--fs-sm);cursor:pointer}.sidebar input[type=radio],.sidebar input[type=checkbox]{accent-color:var(--accent);margin:0}.sidebar .count{margin-left:auto;color:var(--ink-muted);font-size:var(--fs-xs);font-variant-numeric:tabular-nums}.sidebar .qmark{position:relative;flex:none;width:15px;height:15px;border-radius:50%;border:1px solid var(--ink-muted);color:var(--ink-muted);font-size:10px;line-height:13px;text-align:center;cursor:help;user-select:none;-webkit-user-select:none}.sidebar .qmark:focus-visible{outline:none;box-shadow:var(--focus-ring)}@media(pointer:coarse){.sidebar .qmark:before{content:"";position:absolute;inset:-12px}}.sidebar .types-details summary{list-style:none;cursor:pointer;display:flex;align-items:center;justify-content:flex-start;gap:5px;min-height:44px;margin-top:var(--gap-sm);padding:2px 0}.sidebar .types-details summary::-webkit-details-marker{display:none}.sidebar .types-details summary:after{content:"▸";flex:none;display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border:1px solid var(--panel-border);border-radius:50%;background:var(--panel-bg);color:var(--accent-strong);font-size:23px;font-weight:700;line-height:1;padding-left:1px;transition:transform var(--dur-fast) var(--ease)}.sidebar .types-details[open] summary:after{transform:rotate(90deg)}.sidebar .types-details summary h3{margin:0}.legend-gradient{height:10px;border-radius:5px;border:1px solid var(--panel-border);background:linear-gradient(to right,var(--ramp-0),var(--ramp-25),var(--ramp-50),var(--ramp-75),var(--ramp-100))}.legend-scale-labels{display:grid;grid-template-columns:repeat(3,1fr);font-size:var(--fs-xs);color:var(--ink-secondary);font-variant-numeric:tabular-nums;margin-top:2px}.legend-scale-labels span:nth-child(2){text-align:center}.legend-scale-labels span:last-child{text-align:right}.legend-note{font-size:var(--fs-xs);color:var(--ink-muted);margin:4px 0 0;line-height:1.5}.legend-sizes{display:flex;align-items:flex-end;gap:var(--gap-md);margin:6px 0 2px}.legend-sizes .item{display:flex;flex-direction:column;align-items:center;gap:2px;font-size:var(--fs-xs);color:var(--ink-secondary)}.legend-swatch-row{display:flex;align-items:center;gap:var(--gap-sm);font-size:var(--fs-xs);color:var(--ink-secondary);margin-top:4px}.province{stroke:var(--province-stroke);stroke-width:var(--province-stroke-width);vector-effect:non-scaling-stroke;transition:fill-opacity var(--dur-fast) var(--ease)}.river{fill:none;stroke:var(--river-stroke);stroke-width:.8px;vector-effect:non-scaling-stroke;opacity:.75}.lake{fill:var(--lake-fill);stroke:none;opacity:.85}.bubble{stroke:var(--bubble-stroke);stroke-width:1.4px;vector-effect:non-scaling-stroke;cursor:pointer}.bubble.no-data{stroke:var(--ink-muted);stroke-dasharray:3 2}.bubble-max-ring{fill:none;stroke-dasharray:4 3;stroke-width:1.1px;vector-effect:non-scaling-stroke;pointer-events:none}.bubble-min-ring{fill:none;stroke:var(--bubble-stroke);stroke-dasharray:3 2;stroke-width:1px;vector-effect:non-scaling-stroke;pointer-events:none}.bubble.hovered,.bubble.selected{stroke:var(--ink-primary);stroke-width:2px}@media(pointer:coarse){.map-stage.is-map-interacting .bubble-min-ring,.map-stage.is-map-interacting .bubble-max-ring{display:none}}.landmark-mark{pointer-events:none;fill:var(--ink-inverse);font-size:9px;text-anchor:middle}.tooltip{position:absolute;pointer-events:none;z-index:40;background:var(--panel-bg-solid);border:1px solid var(--panel-border);border-radius:10px;box-shadow:var(--panel-shadow);padding:8px 12px;max-width:280px;font-size:var(--fs-sm);line-height:1.5;opacity:0;transition:opacity var(--dur-fast) var(--ease)}.tooltip .tt-title{font-weight:650}.tooltip .tt-sub{color:var(--ink-secondary);font-size:var(--fs-xs)}.tooltip .tt-value{font-variant-numeric:tabular-nums}.tooltip .tt-hint{color:var(--ink-muted);font-size:var(--fs-xs);margin-top:2px}.hint-pop{position:fixed;z-index:60;max-width:260px;background:var(--panel-bg-solid);border:1px solid var(--panel-border);border-radius:10px;box-shadow:var(--panel-shadow);padding:8px 12px;font-size:var(--fs-xs);line-height:1.5;color:var(--ink-primary);opacity:0;pointer-events:none;transition:opacity var(--dur-fast) var(--ease)}.hint-pop.visible{opacity:1}.timeline-head{position:relative;display:flex;align-items:center;gap:var(--gap-sm);flex-wrap:wrap;padding-right:48px;min-height:42px}.timeline-head .year-controls{display:inline-flex;align-items:center;gap:var(--gap-sm);flex:none}.timeline-head .play-btn{gap:6px}.timeline-head .play-icon{flex:none;width:15px;height:15px;overflow:visible}.timeline-head .play-icon .play-glyph{fill:currentColor;stroke:currentColor;stroke-width:2.4;stroke-linejoin:round}.timeline-head .play-icon .pause-glyph{fill:none;stroke:currentColor;stroke-width:3;stroke-linecap:round}.timeline-head .reset-btn{gap:5px}.timeline-head .reset-btn:not(:disabled){background:var(--accent);border-color:var(--accent);color:var(--ink-inverse)}.timeline-head .reset-icon{flex:none;width:15px;height:15px;overflow:visible}.timeline-head .reset-icon path{fill:none;stroke:currentColor;stroke-width:2.1;stroke-linecap:round;stroke-linejoin:round}.timeline-head .window-label{position:absolute;left:50%;transform:translate(-50%);font-size:var(--fs-title);font-weight:700;color:var(--ink-primary);font-variant-numeric:tabular-nums;pointer-events:none;white-space:nowrap}.timeline-head .window-label.playing{color:var(--accent-strong)}.timeline-head .speed-control{position:relative;display:inline-flex;flex:none}.timeline-head .speed-btn{min-width:96px;height:36px;min-height:36px;justify-content:space-between;padding:6px 9px 6px 10px;background:transparent}.timeline-head .speed-caret{flex:none;width:14px;height:14px;color:var(--accent-strong);transition:transform var(--dur-fast) var(--ease)}.timeline-head .speed-caret path{fill:none;stroke:currentColor;stroke-width:2.1;stroke-linecap:round;stroke-linejoin:round}.timeline-head .speed-control.is-open .speed-caret{transform:rotate(180deg)}.timeline-head .speed-menu{position:absolute;bottom:calc(100% + 6px);left:0;min-width:100%;padding:4px;border:1px solid var(--panel-border);border-radius:10px;background:var(--panel-bg-solid);box-shadow:var(--panel-shadow);opacity:0;pointer-events:none;transform:translateY(4px);transition:opacity var(--dur-fast) var(--ease),transform var(--dur-fast) var(--ease)}.timeline-head .speed-control.is-open .speed-menu{opacity:1;pointer-events:auto;transform:translateY(0)}.timeline-head .speed-option{display:flex;align-items:center;width:100%;height:32px;padding:0 10px;border:0;border-radius:8px;background:transparent;color:var(--ink-primary);font:inherit;font-size:var(--fs-sm);text-align:left;white-space:nowrap;cursor:pointer}.timeline-head .speed-option:focus-visible{outline:none;background:var(--accent-soft)}.timeline-head .speed-option[aria-selected=true]{background:var(--accent);color:var(--ink-inverse)}.timeline-head .speed-option[aria-selected=true]:focus-visible{background:var(--accent-strong)}@media(max-width:760px){.app-title{font-size:17.4px;white-space:nowrap}.app-subtitle{white-space:nowrap}.app-icon{width:38px;height:38px}.timeline-head .window-label{position:static;transform:none;margin-left:16px;font-size:var(--fs-lg)}.timeline-head{gap:4px;padding-right:44px}.timeline-head .play-btn{width:36px;min-width:36px;height:36px;min-height:36px;padding:0}.timeline-head .play-label,.timeline-head .reset-label,.timeline-head .speed-control{display:none}.timeline-head .year-controls{gap:3px}.timeline-head .year-controls .btn{min-width:0;min-height:36px;height:36px;padding:6px;font-size:11px}}.timeline-head .expand-btn{position:absolute;top:0;right:0;width:42px;height:42px;min-width:42px;min-height:42px;padding:0;border-radius:50%;background:var(--panel-bg);box-shadow:var(--panel-shadow);backdrop-filter:blur(var(--panel-blur));-webkit-backdrop-filter:blur(var(--panel-blur));color:var(--accent-strong)}.timeline-head .expand-btn .chevron-icon{width:18px;height:18px}.timeline-svg{display:block;width:100%}.timeline-svg .year-bar{fill:var(--accent);opacity:.55}.timeline-svg .year-bar.outside{opacity:.16}.timeline-svg .axis text{font-size:var(--fs-xs);fill:var(--ink-muted)}.timeline-svg .axis line,.timeline-svg .axis path{stroke:var(--baseline)}.timeline-svg .playhead{stroke:var(--accent-strong);stroke-width:1.6px}.timeline-svg .selection{fill:var(--accent);fill-opacity:.14;stroke:var(--accent)}.timeline-svg .scatter-dot{stroke:var(--bubble-stroke);stroke-width:1px;cursor:pointer}.timeline-svg .scatter-dot.dimmed{opacity:.18}.timeline-svg .scatter-dot.hovered,.timeline-svg .scatter-dot.selected{stroke:var(--ink-primary);stroke-width:1.6px}.timeline-svg .scatter-range{fill:none;stroke-width:1px;opacity:.55;pointer-events:none}.timeline-svg .scatter-range.dimmed{opacity:.1}.timeline-svg .lane-label{font-size:var(--fs-xs);fill:var(--ink-muted)}.timeline-svg .gridline{stroke:var(--gridline);stroke-dasharray:2 3}.detail-card h2{margin:0 44px 2px 0;font-size:var(--fs-lg);line-height:1.3}.detail-card .badges{display:flex;gap:var(--gap-xs);flex-wrap:wrap;margin:6px 0 10px}.badge{font-size:var(--fs-xs);border-radius:999px;padding:2px 9px;border:1px solid var(--panel-border);color:var(--ink-secondary);background:#0b0b0b0a}.badge.q-high{border-color:#0ca30c;color:#006300;background:#0ca30c14}.badge.q-medium{border-color:var(--warning-border);color:#7a5200;background:var(--warning-bg)}.badge.q-low{border-color:#d03b3b;color:#9b1c1c;background:#d03b3b14}.badge.landmark{border-color:var(--accent);color:var(--accent-strong);background:var(--accent-soft)}.provisional-note{font-size:var(--fs-xs);background:var(--warning-bg);border:1px solid var(--warning-border);border-radius:8px;padding:6px 10px;margin-bottom:10px;line-height:1.5}.detail-card dl{margin:0;display:grid;grid-template-columns:minmax(96px,auto) 1fr;gap:3px 12px;font-size:var(--fs-sm)}.detail-card dt{color:var(--ink-muted)}.detail-card dd{margin:0;font-variant-numeric:tabular-nums}.detail-card .desc{font-size:var(--fs-sm);line-height:1.65;margin:10px 0;color:var(--ink-primary)}.detail-card .sources-list{margin:4px 0 0;padding-left:18px;font-size:var(--fs-xs);line-height:1.7}.detail-card .sources-list a{color:var(--accent-strong);word-break:break-word}.modal-head{display:flex;align-items:center;padding:var(--gap-md) var(--gap-lg);border-bottom:1px solid var(--gridline);gap:var(--gap-md)}.modal-head h2{margin:0;font-size:var(--fs-title);flex:1}.modal-body .readme{font-size:var(--fs-sm);line-height:1.7}.modal-body .readme h1{font-size:var(--fs-lg)}.modal-body .readme h2{font-size:var(--fs-md);margin-top:1.4em}.modal-body .readme code{background:#0b0b0b0f;border-radius:4px;padding:0 4px;font-size:.92em}.modal-body .readme a{color:var(--accent-strong)}.modal-body .readme table{border-collapse:collapse;width:100%;font-size:var(--fs-xs);margin:8px 0}.modal-body .readme th,.modal-body .readme td{border:1px solid var(--gridline);padding:4px 8px;text-align:left;vertical-align:top}.modal-body .readme th{background:#0b0b0b0a}.modal-body .download-row{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--gap-md);margin:var(--gap-md) 0;padding:var(--gap-md);border:1px solid var(--gridline);border-radius:10px;background:#2a78d60d}.modal-body .download-note{display:block;font-size:var(--fs-xs);text-align:center;color:var(--ink-secondary)}.warn-banner{position:absolute;top:calc(64px + env(safe-area-inset-top,0px));left:50%;transform:translate(-50%);background:var(--warning-bg);border:1px solid var(--warning-border);border-radius:10px;padding:8px 14px;font-size:var(--fs-sm);z-index:30}@media(prefers-reduced-motion:reduce){*{transition-duration:1ms!important}}
