:root{font-family:-apple-system,BlinkMacSystemFont,'Noto Sans TC',sans-serif;color:#f4f0e8;background:#0d1423;font-size:15px}*{box-sizing:border-box}body{margin:0;min-height:100vh}button,input,select,textarea{font:inherit}button{cursor:pointer;border:1px solid #3c4a64;border-radius:10px;background:#253249;color:#f7f0df;padding:.65rem .8rem}button:disabled{opacity:.45;cursor:not-allowed}button:hover:not(:disabled){border-color:#d2aa66}.primary{background:#dfb878;color:#182033;border-color:#dfb878;font-weight:700}.full{width:100%;margin-top:.8rem}header{position:sticky;top:0;z-index:5;background:#111b2eec;backdrop-filter:blur(12px);padding:calc(.75rem + env(safe-area-inset-top)) 1rem .75rem;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid #35415b}.brand{font-weight:800;color:#f1c985;font-size:1.12rem}header small,#save-status,.muted{color:#aebbd0}#save-status{font-size:.78rem;white-space:nowrap}main{max-width:850px;margin:auto;padding:1rem 1rem calc(5rem + env(safe-area-inset-bottom))}.stack{display:grid;gap:1rem}.card{background:#192439;border:1px solid #344158;border-radius:16px;padding:1rem;box-shadow:0 9px 22px #050a1338}.card h1,.card h2{margin:.1rem 0 .8rem;font-size:1.2rem}.card h2{font-size:1.05rem}.card p{line-height:1.55}.row{display:flex;align-items:center;gap:.6rem;justify-content:space-between;margin:.55rem 0}.grow{flex:1;min-width:0}.tabs{display:flex;gap:.4rem;margin:.8rem 0}.tabs button{flex:1}.tabs .active,nav .active{background:#d5ad6d;color:#142034;font-weight:700}label{display:block;color:#d4dce9;font-size:.88rem}input,select,textarea{display:block;width:100%;margin:.3rem 0 .55rem;padding:.67rem;background:#10192a;border:1px solid #45536c;border-radius:10px;color:#fff;outline:none}input:focus,select:focus,textarea:focus{border-color:#e2be83}textarea{resize:vertical}small{font-size:.76rem}.chart{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));grid-template-rows:repeat(4,88px);gap:3px;background:#a48862;border:3px solid #a48862;border-radius:14px;overflow:hidden}.cell{border:0;border-radius:0;background:#f3eee1;color:#1b2a40;text-align:left;padding:.3rem;display:flex;flex-direction:column;overflow:hidden}.cell.chosen{background:#f4d9a5;box-shadow:inset 0 0 0 3px #a66e26}.cell strong{font-size:.78rem;white-space:nowrap}.cell small{margin-top:.2rem;line-height:1.2;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.tiny{font-size:.58rem;margin-top:auto;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.center{grid-column:span 1;background:#18273f;color:#ebc88a;display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;padding:.2rem;font-size:.8rem}.center span{color:#fff}.center small{color:#bac9dc}.overlay-line{display:grid;grid-template-columns:3.5rem 4rem 1fr;gap:.4rem;border-bottom:1px solid #35445d;padding:.5rem 0}.overlay-line small{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.chips{display:flex;flex-wrap:wrap;gap:.4rem;margin:.5rem 0}.chip{padding:.4rem .55rem;border-radius:999px;font-size:.82rem}.chip.on{background:#7a5937;border-color:#d8b47b}.transform{display:grid;grid-template-columns:3rem 1fr 5rem;gap:.4rem;align-items:center}.transform input,.transform select{margin:.2rem 0}.issues{padding-left:1.3rem;line-height:1.5}.issues li{margin:.32rem 0}.error{color:#ffaaa1}.warning{color:#f6d693}.success{color:#9ddab0}details{border-top:1px solid #344158;padding:.55rem 0}summary{cursor:pointer;color:#e6c38b}pre{white-space:pre-wrap;overflow-wrap:anywhere;background:#0d1524;padding:.75rem;border-radius:10px;max-height:22rem;overflow:auto;font-size:.75rem}.import{margin-top:1rem}nav{position:fixed;bottom:0;left:0;right:0;background:#111b2ef5;display:flex;gap:.5rem;padding:.5rem .8rem calc(.5rem + env(safe-area-inset-bottom));border-top:1px solid #344158;z-index:5}nav button{flex:1}#toast{position:fixed;top:5rem;left:50%;transform:translateX(-50%);background:#d9b477;color:#172033;border-radius:12px;padding:.5rem .8rem;z-index:10;max-width:85%;font-size:.82rem}#toast:empty{display:none}@media(max-width:390px){.chart{grid-template-rows:repeat(4,75px)}.cell{padding:.18rem}.cell strong{font-size:.68rem}.tiny{font-size:.51rem}main{padding:.7rem .55rem calc(5rem + env(safe-area-inset-bottom))}.card{padding:.75rem}.row{flex-wrap:wrap}}
.claim{border-top:1px solid #344158;padding:.65rem 0;display:grid;gap:.3rem}.claim small{color:#b5c4d5}@media(max-width:390px){.row>input{min-width:8rem;flex:1}}
/* Avoid automatic input zoom on iPhone; leave room to scroll fields above navigation. */
input,select,textarea{font-size:16px;scroll-margin-block:7rem}body{min-height:100dvh}.row>button{flex-shrink:0}button{min-height:44px}.chip{min-height:36px}header{gap:.5rem}.card{min-width:0}#save-status{white-space:normal;max-width:8rem}html{scroll-padding-bottom:7rem}#import-text{overflow-wrap:anywhere}
@media(max-height:500px){header{position:static}nav{position:static}main{padding-bottom:1rem}}
/* V1.3: scrollable modal sheets follow the visual viewport, including a software keyboard. */
html{overflow-wrap:anywhere}.row{flex-wrap:wrap}button:focus-visible,summary:focus-visible{outline:3px solid #f1c985;outline-offset:3px}.chip{min-height:44px}.empty-check{display:flex;align-items:center;gap:.5rem;margin:.8rem 0}.empty-check input{width:24px;height:24px;margin:0;flex-shrink:0}.completeness{display:grid;gap:.75rem}.status-card{border:1px solid #53637c;border-radius:12px;padding:.8rem;margin:.6rem 0;min-width:0}.status-card h3{margin:.2rem 0;font-size:1rem}.status-card p{margin:.4rem 0;font-size:.88rem}.status-card.complete{border-left:4px solid #9ddab0}.status-card.missing{border-left:4px solid #f6d693}.status-card.conflict{border-left:4px solid #ffaaa1}.sheet{position:fixed;inset:auto 0 auto;top:calc(var(--viewport-top,0px) + var(--visible-height,100dvh));transform:translateY(-100%);margin:0 auto;max-height:calc(var(--visible-height,100dvh) - 12px);width:min(100%,700px);max-width:100%;padding:1rem 1rem calc(1rem + env(safe-area-inset-bottom));border:1px solid #596986;border-radius:20px 20px 0 0;background:#192439;color:#f4f0e8;overflow-y:auto;overscroll-behavior:contain}.sheet::backdrop{background:#030915bd}.sheet-head{display:flex;align-items:center;justify-content:space-between;gap:.5rem;position:sticky;top:-1rem;background:#192439;z-index:1;padding:.5rem 0}.sheet-head h2{font-size:1.15rem;margin:0}body:has(dialog[open]){overflow:hidden}.evidence{display:grid;gap:.2rem;padding:.4rem 0;border-bottom:1px solid #344158}.evidence code{font-size:.8rem;color:#edd19f}.keyboard-open nav{display:none}.keyboard-open header{position:static}main{padding-bottom:calc(6rem + env(safe-area-inset-bottom))}@media(min-width:700px){.completeness{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(max-width:430px){.row>input{flex:1;min-width:120px}.row>label{flex-basis:100%}header .brand{font-size:1rem}.sheet{padding-inline:.8rem}.overlay-line small{white-space:normal}.tiny{font-size:.56rem}}
/* V1.4: local comparison scroll stays inside the phone viewport. */
nav button{min-width:0;padding:.65rem .35rem;font-size:.85rem}.bm{min-width:0}.bm-hash{font:12px ui-monospace,monospace;overflow-wrap:anywhere;color:#b8c9df}.bm-metrics{display:grid;gap:.35rem;font-size:.85rem}.bm-comparison{display:flex;gap:.8rem;overflow-x:auto;max-width:100%;padding-bottom:1rem;scroll-snap-type:x proximity}.bm-run{flex:0 0 min(310px,90%);min-width:0;background:#111d30;border:1px solid #50617b;border-radius:12px;padding:.8rem;scroll-snap-align:start}.bm-run pre{max-height:18rem}.bm-run h3{margin:.5rem 0}.bm details textarea{max-width:100%}.bm label{margin-top:.6rem}

@media(max-width:430px){nav{gap:.25rem;padding-left:.35rem;padding-right:.35rem}nav button{font-size:.78rem;padding:.6rem .15rem}}

.file-sync-preview{border-top:1px solid #45536c;margin-top:1rem;padding-top:.5rem}.sync-table{overflow:auto}.sync-table table{width:100%;border-collapse:collapse}.sync-table th,.sync-table td{padding:.6rem;text-align:left;border-bottom:1px solid #45536c;vertical-align:top}.sync-hash{overflow-wrap:anywhere;font-size:.76rem;color:#b4c1d5}.file-sync-card button{min-height:44px}

[hidden]{display:none!important}
