:root{--navy: #0a2540;--navy-2: #103a5e;--maple: #d64045;--maple-dark: #b5363b;--soft: #f4f7fa;--ink: #1b2733;--muted: #5a6b7b;--line: #d9e2ec;--white: #ffffff;--ok: #1a7f5a;--ok-bg: #e6f5ee;--warn: #9a6a00;--warn-bg: #fdf3dc;--err: #b3261e;--err-bg: #fbe9e7;--radius: 12px;--shadow: 0 1px 3px rgba(10, 37, 64, .08), 0 6px 20px rgba(10, 37, 64, .06);--focus: 0 0 0 3px rgba(214, 64, 69, .45);font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--soft);color:var(--ink);line-height:1.5;-webkit-font-smoothing:antialiased}h1,h2,h3{color:var(--navy);line-height:1.25;margin:0 0 .5rem}h1{font-size:1.5rem}h2{font-size:1.2rem}p{margin:0 0 1rem}a{color:var(--maple-dark)}.app-shell{min-height:100%;display:flex;flex-direction:column}.demo-banner{background:var(--navy);color:var(--soft);padding:.6rem 1rem;font-size:.8rem;display:flex;gap:.5rem;align-items:baseline}.demo-banner strong{color:#ffd9db}.topbar{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:.75rem 1rem;background:var(--white);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:10}.brand{display:flex;align-items:center;gap:.55rem}.brand img{width:30px;height:30px;border-radius:7px}.brand-name{font-weight:700;color:var(--navy);font-size:1.05rem;line-height:1}.brand-sub{color:var(--muted);font-size:.72rem}.topbar-actions{display:flex;gap:.4rem}.icon-btn,.lang-btn{border:1px solid var(--line);background:var(--white);color:var(--navy);border-radius:8px;padding:.4rem .7rem;font-size:.85rem;font-weight:600;cursor:pointer;min-height:40px}.icon-btn:hover,.lang-btn:hover{background:var(--soft)}main.content{flex:1;width:100%;max-width:640px;margin:0 auto;padding:1rem 1rem 3rem}.stepper{display:flex;gap:.35rem;margin-bottom:1.25rem}.stepper .dot{flex:1;height:6px;border-radius:999px;background:var(--line)}.stepper .dot.done{background:var(--maple)}.stepper .dot.current{background:var(--navy)}.step-label{font-size:.78rem;color:var(--muted);margin-bottom:1rem}.lead{color:var(--muted);font-size:.95rem}.card{background:var(--white);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:1.1rem;margin-bottom:1rem}.field{margin-bottom:1rem}.field label{display:block;font-weight:600;font-size:.9rem;margin-bottom:.35rem;color:var(--ink)}.field .hint{font-size:.78rem;color:var(--muted);margin-top:.3rem}.field .error{font-size:.8rem;color:var(--err);margin-top:.3rem}input[type=text],input[type=email],input[type=password],select{width:100%;padding:.65rem .7rem;border:1px solid var(--line);border-radius:9px;font-size:1rem;background:var(--white);color:var(--ink);min-height:44px}input:focus,select:focus,button:focus-visible,.toggle:focus-visible,.seg-card:focus-visible{outline:none;box-shadow:var(--focus);border-color:var(--maple)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;width:100%;padding:.8rem 1rem;border-radius:10px;border:1px solid transparent;font-size:1rem;font-weight:700;cursor:pointer;min-height:48px}.btn-primary{background:var(--maple);color:#fff}.btn-primary:hover{background:var(--maple-dark)}.btn-primary:disabled{background:#e3a9ab;cursor:not-allowed}.btn-secondary{background:var(--white);color:var(--navy);border-color:var(--line)}.btn-secondary:hover{background:var(--soft)}.btn-row{display:flex;gap:.6rem;margin-top:.5rem}.btn-row .btn{width:auto;flex:1}.consent-item{border:1px solid var(--line);border-radius:var(--radius);padding:.9rem;margin-bottom:.8rem;background:var(--white)}.consent-head{display:flex;justify-content:space-between;gap:.75rem;align-items:flex-start}.consent-title{font-weight:700;color:var(--navy);font-size:.98rem}.consent-block{font-size:.85rem;margin-top:.5rem}.consent-block .k{font-weight:600;color:var(--ink)}.consent-block .v{color:var(--muted)}.decline-note{font-size:.8rem;color:var(--warn);background:var(--warn-bg);border-radius:8px;padding:.4rem .6rem;margin-top:.5rem}.toggle{position:relative;display:inline-flex;align-items:center;cursor:pointer;-webkit-user-select:none;user-select:none}.toggle input{position:absolute;opacity:0;width:48px;height:28px;margin:0;cursor:pointer}.toggle .track{width:48px;height:28px;border-radius:999px;background:#c3ccd6;transition:background .15s;flex:none}.toggle .thumb{position:absolute;top:3px;left:3px;width:22px;height:22px;border-radius:50%;background:#fff;box-shadow:0 1px 2px #0000004d;transition:transform .15s}.toggle input:checked~.track{background:var(--ok)}.toggle input:checked~.thumb{transform:translate(20px)}.toggle-state{font-size:.72rem;font-weight:700;margin-left:.5rem}.toggle-state.on{color:var(--ok)}.toggle-state.off{color:var(--muted)}.seg-grid{display:grid;grid-template-columns:1fr;gap:.7rem}.seg-card{text-align:left;background:var(--white);border:2px solid var(--line);border-radius:var(--radius);padding:.95rem;cursor:pointer;width:100%}.seg-card:hover{border-color:var(--navy-2)}.seg-card.selected{border-color:var(--maple);box-shadow:var(--shadow)}.seg-card h3{margin:0 0 .25rem;font-size:1.02rem}.seg-card p{margin:0;font-size:.85rem;color:var(--muted)}.doc-item{border:1px solid var(--line);border-radius:var(--radius);padding:.9rem;margin-bottom:.8rem;background:var(--white)}.doc-head{display:flex;justify-content:space-between;align-items:center;gap:.5rem}.doc-title{font-weight:700;color:var(--navy);font-size:.95rem}.badge{font-size:.68rem;font-weight:700;padding:.15rem .5rem;border-radius:999px;text-transform:uppercase;letter-spacing:.02em}.badge.req{background:var(--navy);color:#fff}.badge.opt{background:var(--soft);color:var(--muted);border:1px solid var(--line)}.badge.done{background:var(--ok-bg);color:var(--ok)}.file-input-wrap{margin-top:.6rem}.file-label{display:inline-flex;align-items:center;justify-content:center;gap:.4rem;border:1px dashed var(--navy-2);color:var(--navy);background:var(--soft);border-radius:9px;padding:.6rem .8rem;font-size:.88rem;font-weight:600;cursor:pointer;width:100%;min-height:46px}.file-label:hover{background:#eaf0f6}.file-label input{position:absolute;width:1px;height:1px;opacity:0;overflow:hidden}.extract{margin-top:.7rem;border-top:1px solid var(--line);padding-top:.6rem}.kv-table{width:100%;border-collapse:collapse;font-size:.82rem}.kv-table td{padding:.3rem .4rem;border-bottom:1px solid var(--line);vertical-align:top}.kv-table td.k{color:var(--muted);white-space:nowrap}.kv-table td.v{font-weight:600;text-align:right}.conf{display:inline-block;font-size:.72rem;color:var(--muted);margin-left:.35rem}.anomaly{font-size:.8rem;color:var(--err);background:var(--err-bg);border-radius:8px;padding:.4rem .6rem;margin-top:.5rem}.anomaly.none{color:var(--ok);background:var(--ok-bg)}.score-hero{text-align:center;padding:1.2rem}.score-num{font-size:3rem;font-weight:800;color:var(--navy);line-height:1}.score-outof{color:var(--muted);font-size:1rem}.band-pill{display:inline-block;margin-top:.6rem;padding:.3rem .9rem;border-radius:999px;font-weight:700;font-size:.9rem}.band-strong{background:var(--ok-bg);color:var(--ok)}.band-good{background:#e7f0fb;color:#1857a8}.band-moderate{background:var(--warn-bg);color:var(--warn)}.band-insufficient{background:var(--err-bg);color:var(--err)}.score-bar-track{height:14px;border-radius:999px;background:var(--line);margin:1rem 0 .3rem;overflow:hidden}.score-bar-fill{height:100%;border-radius:999px;background:linear-gradient(90deg,var(--navy),var(--maple))}.expert-label{font-size:.78rem;color:var(--ink);background:#eef3f8;border:1px solid var(--line);border-left:4px solid var(--maple);border-radius:8px;padding:.6rem .75rem;margin:.5rem 0 1rem}.factor{display:flex;justify-content:space-between;gap:.75rem;padding:.5rem 0;border-bottom:1px solid var(--line);font-size:.88rem}.factor .pts{font-weight:700;color:var(--navy);white-space:nowrap}.factor.zero .pts{color:var(--muted)}.xval-summary{display:flex;gap:.5rem;flex-wrap:wrap;margin-bottom:.6rem}.xval-chip{font-size:.75rem;font-weight:700;padding:.25rem .6rem;border-radius:999px}.xval-chip.pass{background:var(--ok-bg);color:var(--ok)}.xval-chip.insufficient{background:var(--warn-bg);color:var(--warn)}.xval-chip.fail{background:var(--err-bg);color:var(--err)}.xval-row{display:grid;grid-template-columns:3.2rem 1fr;gap:.5rem;padding:.45rem 0;border-bottom:1px solid var(--line);font-size:.82rem;align-items:start}.xval-status{font-weight:700;font-size:.7rem;text-transform:uppercase;padding:.15rem .35rem;border-radius:6px;text-align:center}.xval-status.pass{background:var(--ok-bg);color:var(--ok)}.xval-status.insufficient{background:var(--warn-bg);color:var(--warn)}.xval-status.fail{background:var(--err-bg);color:var(--err)}.xval-detail .pair-id{font-weight:700;color:var(--navy);margin-right:.35rem}.xval-detail .detail{color:var(--muted)}.package-state{text-align:center;padding:1.2rem}.qr-img{width:180px;height:180px;margin:.8rem auto;display:block;border:1px solid var(--line);border-radius:8px;background:#fff}.notice{background:#eef3f8;border:1px solid var(--line);border-radius:8px;padding:.8rem;color:var(--muted);font-size:.9rem}.spinner{width:26px;height:26px;border:3px solid var(--line);border-top-color:var(--maple);border-radius:50%;animation:spin .8s linear infinite;margin:0 auto}@keyframes spin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.spinner{animation-duration:2.5s}}.center-pad{padding:2rem 1rem;text-align:center;color:var(--muted)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0a254080;display:flex;align-items:flex-end;justify-content:center;z-index:50}.modal{background:#fff;border-radius:16px 16px 0 0;width:100%;max-width:640px;padding:1.2rem;max-height:85vh;overflow:auto}.modal h2{margin-top:0}.settings-row{display:flex;justify-content:space-between;align-items:center;gap:1rem;padding:.7rem 0;border-bottom:1px solid var(--line)}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}@media(min-width:560px){.seg-grid{grid-template-columns:1fr 1fr}h1{font-size:1.7rem}.modal{border-radius:16px;align-self:center}.modal-backdrop{align-items:center}}.app-footer{margin:24px auto 12px;max-width:720px;padding:12px 16px;background:#eef3f8;border:1px solid #d5e0ea;border-radius:10px;color:#33475b;font-size:.82rem;line-height:1.5}
