/* Scoped to the production chart. Uses the application's light/dark VI palette. */
#local-ziwei-card{min-width:0;margin-block:20px;padding:16px;background:var(--surface,var(--panel));border:1px solid var(--line);border-radius:8px}
.zw-shell{color:var(--text);font-size:14px;max-width:960px;margin:auto}
.zw-shell button,.zw-shell select,.zw-shell input{font:inherit;color:inherit;background:var(--surface,var(--bg));border:1px solid var(--line);border-radius:4px;min-height:44px;padding:8px 12px;box-shadow:none}
.zw-shell button{cursor:pointer}.zw-shell button:focus-visible,.zw-shell select:focus-visible,.zw-shell input:focus-visible{outline:2px solid var(--gold);outline-offset:2px}
.zw-shell button[aria-pressed=true]{color:var(--gold);border-color:var(--gold);background:color-mix(in srgb,var(--gold) 12%,var(--bg))}
.zw-scopes,.zw-tools{display:flex;gap:6px;flex-wrap:wrap}.zw-scopes button{flex:1;padding-inline:6px}.zw-tools button{flex:1}.zw-context{font-size:12px;color:var(--muted);padding:10px 0}
.zw-board{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));grid-template-rows:repeat(4,minmax(150px,1fr));border:1px solid var(--line-bright);background:var(--surface,var(--bg));aspect-ratio:1.12;position:relative}
.zw-board .zw-palace{display:flex;flex-direction:column;gap:4px;min-width:0;min-height:0;overflow:hidden;border:0;border-radius:0;border-right:1px solid var(--line);border-bottom:1px solid var(--line);padding:7px 5px;text-align:left;color:var(--text)}
.zw-palace[data-related=true]{background:color-mix(in srgb,var(--gold) 6%,var(--bg));box-shadow:inset 0 0 0 1px var(--line-bright)}
.zw-board .zw-palace[aria-pressed=true]{color:var(--text);box-shadow:inset 0 0 0 2px var(--gold)}
.zw-stars{display:flex;flex-wrap:wrap;gap:3px;align-content:start}.zw-star{display:inline-flex;flex-direction:column;align-items:center;font-size:14px;line-height:1.1}.zw-star>span{writing-mode:vertical-rl;text-orientation:upright;letter-spacing:0}.zw-star small{font-size:10px;color:var(--muted);line-height:1.2}.zw-major>span{font-weight:600}.zw-minor>span{color:var(--gold)}.zw-adjective>span{color:var(--muted);font-size:12px}.zw-star i{font-style:normal;font-size:10px;line-height:1.1;border:1px solid currentColor;margin-top:1px}.zw-star [data-hua=禄]{color:var(--green)}.zw-star [data-hua=权]{color:var(--gold)}.zw-star [data-hua=科]{color:var(--wx-shui)}.zw-star [data-hua=忌]{color:var(--red)}
.zw-cell-foot{display:flex;flex-direction:column;gap:2px;margin-top:auto}.zw-cell-foot>span{display:flex;justify-content:space-between;gap:2px;align-items:end}.zw-cell-foot small{font-size:10px;color:var(--muted)}.zw-cell-foot b{font-size:15px;color:var(--gold);font-family:"Songti SC","Mingli Serif",serif}.zw-cell-foot span span{font-size:12px}.zw-cell-foot em{font-style:normal;font-size:10px;color:var(--wx-shui)}
.zw-center{grid-row:2/4;grid-column:2/4;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:12px;padding:16px;text-align:center;min-width:0;overflow:auto}
.zw-center h3{font:500 28px/1.3 serif;margin:0;color:var(--text)}.zw-center p{margin:0;line-height:1.5;font-size:14px}.zw-center small{font-size:12px;color:var(--muted)}.zw-center .zw-transform-summary{font-size:12px;color:var(--gold)}.zw-center button{font-size:13px}
.zw-legend,.zw-time-note{font-size:12px!important;line-height:1.6;color:var(--muted);margin:10px 0!important}.zw-timeline{display:flex;gap:10px;flex-wrap:wrap;margin-top:12px}.zw-timeline:empty{display:none}.zw-timeline label{display:flex;flex-direction:column;gap:5px;font-size:12px;min-width:0}.zw-timeline input{width:104px}.zw-timeline select{max-width:100%}.zw-request{color:var(--red);font-size:13px}.zw-request:empty{display:none}.zw-request button{margin-left:8px}.zw-relation-panel h4{font-size:16px;margin:20px 0 10px}.zw-relation-panel h4 small{font-size:12px;font-weight:400;color:var(--muted)}
.zw-relations{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}.zw-relations button{display:flex;flex-direction:column;gap:7px;text-align:left;min-width:0;white-space:normal}.zw-relations b{font-size:14px}.zw-relations span,.zw-relations small{font-size:12px;line-height:1.6}.zw-relations small{color:var(--muted)}
.zw-hua{margin-top:18px;border-top:1px solid var(--line);padding-top:12px}.zw-hua summary{cursor:pointer;min-height:44px;display:flex;align-items:center}.zw-hua ul{list-style:none;padding:0}.zw-hua li{display:flex;align-items:center;justify-content:space-between;gap:12px;border-top:1px solid var(--line);padding:6px 0;font-size:13px}
.zw-sheet{position:fixed;color:var(--text);background:var(--surface,var(--bg));border:1px solid var(--line-bright);border-radius:10px;width:min(560px,calc(100% - 24px));max-height:80dvh;padding:0;overscroll-behavior:contain}.zw-sheet::backdrop{background:#0008}.zw-sheet header{position:sticky;top:0;background:var(--surface,var(--bg));display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-bottom:1px solid var(--line)}.zw-sheet-body{padding:16px}.zw-sheet-body h3{font-size:20px}.zw-sheet-body dl{display:grid;gap:16px}.zw-sheet-body dt{font-size:12px;color:var(--muted)}.zw-sheet-body dd{margin:4px 0 0;line-height:1.7;font-size:14px}.zw-sheet-body p{font-size:12px;color:var(--muted)}
@media(max-width:640px){
 #local-ziwei-card{padding:8px;margin-inline:-8px}.zw-scopes{gap:1px;flex-wrap:nowrap}.zw-scopes button{font-size:12px;padding:6px 3px}.zw-board{aspect-ratio:auto;height:min(125vw,500px);grid-template-rows:repeat(4,minmax(0,1fr))}.zw-board .zw-palace{padding:4px 2px;gap:1px}.zw-stars{gap:1px}.zw-star{font-size:12px}.zw-adjective>span{font-size:10px}.zw-star small{font-size:9px}.zw-star i{font-size:9px;border:0}.zw-cell-foot{gap:1px}.zw-cell-foot small{font-size:9px}.zw-cell-foot b{font-size:13px}.zw-cell-foot span span{font-size:10px}.zw-cell-foot em{font-size:9px}.zw-center{gap:8px;padding:8px}.zw-center h3{font-size:23px}.zw-center p{font-size:12px}.zw-center small,.zw-center .zw-transform-summary{font-size:11px}.zw-center button{font-size:12px;padding-inline:6px}.zw-relations{grid-template-columns:repeat(2,minmax(0,1fr))}.zw-tools button{font-size:12px;padding-inline:6px}.zw-sheet{inset:auto 0 0;margin:0;width:100%;max-width:none;max-height:78dvh;border-radius:12px 12px 0 0;padding-bottom:env(safe-area-inset-bottom)}
}
@media print{.zw-scopes,.zw-tools,.zw-timeline,.zw-sheet,.zw-center button{display:none}.zw-board{break-inside:avoid}}

.zw-palace[data-palace="巳"]{grid-row:1;grid-column:1}
.zw-palace[data-palace="午"]{grid-row:1;grid-column:2}
.zw-palace[data-palace="未"]{grid-row:1;grid-column:3}
.zw-palace[data-palace="申"]{grid-row:1;grid-column:4}
.zw-palace[data-palace="酉"]{grid-row:2;grid-column:4}
.zw-palace[data-palace="戌"]{grid-row:3;grid-column:4}
.zw-palace[data-palace="亥"]{grid-row:4;grid-column:4}
.zw-palace[data-palace="子"]{grid-row:4;grid-column:3}
.zw-palace[data-palace="丑"]{grid-row:4;grid-column:2}
.zw-palace[data-palace="寅"]{grid-row:4;grid-column:1}
.zw-palace[data-palace="卯"]{grid-row:3;grid-column:1}
.zw-palace[data-palace="辰"]{grid-row:2;grid-column:1}
.zw-cell-foot{line-height:1.25}.zw-stars{align-items:flex-start}
@media(max-width:640px){#local-ziwei-card{margin-inline:-16px;padding-inline:4px;border-inline:0;border-radius:0}.zw-board{height:min(520px,calc(100svh - 154px))}.zw-star{line-height:1}.zw-palace[data-dense=true] .zw-star{font-size:10px}.zw-palace[data-dense=true] .zw-adjective>span{font-size:9px}.zw-palace[data-dense=true] .zw-stars{gap:0}.zw-palace[data-dense=true] .zw-star small,.zw-palace[data-dense=true] .zw-star i{font-size:8px}}
@media(max-width:360px),(max-height:600px) and (max-width:640px){.zw-star{font-size:10px}.zw-adjective>span{font-size:9px}.zw-star small,.zw-star i{font-size:8px}.zw-cell-foot b{font-size:12px}.zw-cell-foot small,.zw-cell-foot em{font-size:8px}.zw-center{gap:5px}.zw-center h3{font-size:20px}}
/* Dense palaces keep every star; only their star area scales to the remaining
   cell height. Names and layer labels retain their normal touch/read sizes. */
.zw-star-area{display:block;position:relative;flex:1;min-height:0;overflow:hidden;width:100%}.zw-star-area>.zw-stars{position:absolute;top:0;left:0;width:100%;transform-origin:top left}.zw-star i{white-space:nowrap}.zw-cell-foot{flex-shrink:0}
/* Account for the real sticky navigation height when fitting the whole board. */
.zw-board{aspect-ratio:auto;height:min(720px,calc(100svh - var(--flow-nav-height,112px) - 96px));grid-template-rows:repeat(4,minmax(0,1fr))}
@media(max-width:640px){.zw-board{height:min(520px,calc(100svh - var(--flow-nav-height,112px) - 96px))}}
/* Relationship overlay: never captures palace taps; text remains above paths. */
.zw-lines{position:absolute;inset:0;width:100%;height:100%;z-index:1;pointer-events:none;overflow:visible}
.zw-connection-path{fill:none;stroke:currentColor;stroke-width:1.7;vector-effect:non-scaling-stroke;opacity:.85}
.zw-line-surround{color:var(--gold);stroke-dasharray:5 4}
.zw-line-lu{color:var(--green)}.zw-line-quan{color:var(--gold)}.zw-line-ke{color:var(--wx-shui)}.zw-line-ji{color:var(--red)}
.zw-arrow path{fill:currentColor}
.zw-line-label{fill:currentColor;font:600 7px/1 sans-serif;stroke:var(--surface,var(--bg));stroke-width:2.5;paint-order:stroke;stroke-linejoin:round}
.zw-center{position:relative;z-index:2;pointer-events:none}
.zw-center>*{background:var(--surface,var(--bg));padding-inline:3px;max-width:100%;pointer-events:auto}
.zw-line-caption{font-size:12px;line-height:1.6;color:var(--muted);margin:10px 0 0}
@media(max-width:640px){.zw-line-label{font-size:11px}}
