:root{--bg:#09131f;--surface:#101f2e;--surface2:#152838;--line:#294355;--line2:#36556a;--text:#ecf6f5;--muted:#a5bac6;--mint:#a6e2ca;--mint2:#6cc8ae;--amber:#e5c88f;--red:#f2b7b8;--blue:#bed0f5;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;color-scheme:dark}
*{box-sizing:border-box}body{margin:0;background:var(--bg)}button,select,input,textarea{font:inherit}button{cursor:pointer}button:disabled{opacity:.5;cursor:not-allowed}a{color:var(--mint);text-decoration:none}a:hover{text-decoration:underline}.app{max-width:720px;margin:auto;min-height:100dvh;padding:24px 22px calc(118px + env(safe-area-inset-bottom));background:radial-gradient(ellipse at 100% 0,#1e3645 0%,transparent 38%),var(--bg)}.top{display:flex;align-items:center;gap:12px}.logo{width:48px;height:48px;border-radius:17px;display:grid;place-items:center;background:linear-gradient(135deg,#184d50,#1a3546);border:1px solid #477b7b;color:#c4e8ce;font-size:28px;box-shadow:0 10px 35px #0004}.top h1{font-size:24px;letter-spacing:-.8px;margin:2px 0 0}.eyebrow{text-transform:uppercase;letter-spacing:.17em;color:#8ccbb8;font-size:10px;font-weight:800;margin:0}.mode{margin-left:auto;border:1px solid #4a645e;background:#17362e;color:#c2e4cf;border-radius:100px;padding:7px 9px;font-size:10px;white-space:nowrap;font-weight:800}.mode.local{background:#282a24;color:#e8d8ad;border-color:#665b3c}.notice-banner{margin-top:23px;background:#25291f;border:1px solid #66613e;border-radius:12px;padding:12px 13px;font-size:11px;letter-spacing:.015em;line-height:1.5;color:#e2d7b1;display:flex;gap:10px;align-items:center;font-weight:650}.hero{margin:20px 0 13px;padding:27px 23px;border:1px solid #36536a;border-radius:22px;background:linear-gradient(120deg,#1a3a48,#162636 63%,#242f45);display:flex;justify-content:space-between;gap:14px;overflow:hidden}.hero h2{font-size:clamp(24px,5vw,31px);letter-spacing:-1px;line-height:1.11;max-width:350px;margin:15px 0 11px}.hero p:not(.eyebrow){font-size:13px;color:#c4d4da;line-height:1.6;max-width:420px;margin:0}.hero-symbol{align-self:flex-start;font-size:33px;color:#e1c78b}.metrics{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:14px 0 30px}.metric{border:1px solid #30485b;border-radius:15px;background:#122433;padding:15px 14px}.metric strong{display:block;font-size:26px;letter-spacing:-.6px}.metric small{display:block;color:#a8bbc5;margin-top:4px;font-size:10px}.heading{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:16px}.heading h3{font-size:20px;letter-spacing:-.4px;margin:6px 0 0}.tiny{font-size:11px;color:var(--muted);line-height:1.5}.icon-btn{border:1px solid #3c5466;border-radius:11px;background:#1d3040;color:#d5e7e5;padding:10px 13px;font-size:13px;font-weight:700}.stack{display:flex;flex-direction:column;gap:12px}.card{background:#101f2d;border:1px solid #2d475a;border-radius:17px;padding:19px}.card-head{display:flex;justify-content:space-between;gap:8px;align-items:center}.card h4{font-size:17px;line-height:1.35;letter-spacing:-.2px;margin:14px 0 8px}.card p{font-size:13px;line-height:1.63;color:#bccbd3;margin:0 0 12px;overflow-wrap:anywhere}.card-foot{display:flex;justify-content:space-between;gap:12px;align-items:center;border-top:1px solid #2d4252;padding-top:14px;color:#b0d8ce;font-size:11px;flex-wrap:wrap}.card-foot button{background:transparent;color:#b1e3d2;border:0;font-weight:800;font-size:12px;padding:2px}.pill{display:inline-block;border-radius:100px;font-size:10px;letter-spacing:.07em;font-weight:900;text-transform:uppercase;padding:5px 10px;border:1px solid #856d3e;background:#3b3021;color:var(--amber)}.pill.approved{border-color:#3b7f69;color:#b3eed0;background:#15382f}.pill.rejected{border-color:#80525b;color:#f3b7bd;background:#3b242b}.pill.deferred{border-color:#6375a3;color:#ccdaf6;background:#232d4b}.tag{font-size:10px;color:#a6b9c5;letter-spacing:.04em}.empty{padding:36px 20px;text-align:center;border:1px dashed #446073;border-radius:16px;color:var(--muted);font-size:13px;line-height:1.7}.empty .symbol{display:block;font-size:28px;margin-bottom:10px;color:var(--mint)}.panel{border:1px solid #304e62;background:#112332;border-radius:17px;padding:20px}.form{display:flex;flex-direction:column;gap:17px}.form label,.label{display:flex;flex-direction:column;gap:8px;font-size:12px;font-weight:750;color:#c5d7de}.form input:not([type=checkbox]),.form textarea,.form select,.input{width:100%;background:#0c1a27;border:1px solid #3e5a70;color:#f0f7f7;padding:12px 13px;border-radius:11px;line-height:1.48;font-size:13px;outline:0}.form textarea{min-height:92px;resize:vertical}.form input:focus,.form textarea:focus,.form select:focus{border-color:#99dbc3;box-shadow:0 0 0 2px #3e796b}.cols{display:grid;grid-template-columns:1fr 1fr;gap:12px}.btn{border:1px solid #3c5668;background:#172e3e;color:#e7f4f4;border-radius:11px;padding:12px 16px;font-size:13px;font-weight:800;display:inline-flex;align-items:center;justify-content:center;gap:8px;text-align:center}.btn.primary{background:var(--mint);color:#0c3028;border-color:var(--mint);box-shadow:0 2px 0 #133b31}.btn.ghost{background:transparent;border-color:#4c6a6e;color:#bfe2d8}.btn.danger{color:#f0c0c3;border-color:#765056}.btn.block{width:100%}.btn.small{font-size:11px;padding:8px 11px}.chiprow{display:flex;gap:9px;flex-wrap:wrap}.callout{border:1px solid #396659;background:#19382e;border-radius:12px;padding:13px 15px;color:#b8e3d1;font-size:12px;line-height:1.6}.callout.warn{border-color:#766849;background:#342e22;color:#e6d2a4}.alert{margin:12px 0 18px;padding:12px 14px;border:1px solid #895157;border-radius:12px;background:#382328;color:#ffc6c7;font-size:12px;line-height:1.6}.feedback{margin:12px 0 18px;padding:12px 14px;border:1px solid #3f7e6e;border-radius:12px;background:#17372f;color:#c4eedd;font-size:12px;line-height:1.6}.bottom{position:fixed;z-index:10;bottom:0;left:50%;transform:translateX(-50%);width:min(720px,100%);padding:13px 13px max(17px,env(safe-area-inset-bottom));display:flex;justify-content:space-around;gap:3px;border-top:1px solid #37546a;background:#102130f5;backdrop-filter:blur(15px)}.bottom button{background:transparent;border:0;color:#92a9b5;display:flex;flex-direction:column;align-items:center;gap:5px;font-size:10px;min-width:58px}.bottom button .nav-icon{font-size:21px}.bottom button.active{color:#a9e6cf;font-weight:900}.footer{text-align:center;color:#78909e;font-size:10px;margin-top:30px;line-height:1.6}.overlay{position:fixed;inset:0;z-index:20;background:#030b10de;display:flex;align-items:center;justify-content:center;padding:14px;overflow:auto}.modal{position:relative;max-height:92dvh;overflow:auto;width:min(570px,100%);background:#142636;border:1px solid #456679;border-radius:19px;padding:22px 20px}.modal h3{font-size:23px;margin:12px 32px 7px 0;line-height:1.25}.modal .bodytext{color:#c2d2dc;line-height:1.65;font-size:13px}.close{position:absolute;right:13px;top:9px;border:0;background:transparent;color:#f0f7f7;font-size:30px;padding:5px}.detail{background:#0c1b2a;border:1px solid #2c4554;padding:13px 15px;border-radius:12px;margin:16px 0;font-size:12px;line-height:1.7}.detail b{color:#e2efef}.detail p{color:#bacbd2;margin:5px 0 9px}.line{border:0;border-top:1px solid #385364;margin:19px 0}.checkbox-row{display:flex;gap:10px;align-items:flex-start;color:#c6d9da;font-size:12px;line-height:1.5}.checkbox-row input{accent-color:#8ed9ba;width:18px;height:18px;flex-shrink:0}.controls{display:flex;flex-wrap:wrap;gap:9px}.controls button{flex:1}.splash{min-height:95vh;display:flex;flex-direction:column;align-items:center;justify-content:center}.splash .logo{width:65px;height:65px}.splash h1{margin:15px 0 4px}.splash p{font-size:12px;color:var(--muted)}.auth{max-width:440px;margin:18vh auto 0}.auth h2{font-size:27px;margin:15px 0}.auth .form{margin-top:24px}.auth .eyebrow{margin-top:12px}.steps{display:grid;gap:12px;counter-reset:steps}.step{background:#102230;border:1px solid #344f60;padding:14px 16px;border-radius:12px}.step strong{display:block;font-size:12px;margin-bottom:7px}.step p{font-size:12px;line-height:1.6;color:var(--muted);margin:0}.settings-mono{overflow-wrap:anywhere;font-size:11px;color:#b7dcd2;font-family:ui-monospace,monospace}.result{font-family:ui-monospace,monospace;white-space:pre-wrap;color:#b8dbd3;background:#0b1924;border:1px solid #3b5260;border-radius:11px;padding:13px;font-size:11px;line-height:1.6}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
@media(max-width:430px){.app{padding:19px 15px calc(110px + env(safe-area-inset-bottom))}.hero{padding:22px 18px}.hero h2{font-size:25px}.metric{padding:13px 10px}.metric strong{font-size:24px}.metric small{font-size:9px}.cols{grid-template-columns:1fr}.mode{font-size:9px}.card{padding:16px}.controls button{flex-basis:45%}}@media(min-width:900px){.app{border-left:1px solid #183044;border-right:1px solid #183044}}

/* v0.4: responsive hardening for iPhone Home Screen standalone mode.
   Preserve content and navigation instead of letting narrow flex/grid tracks
   push the document outside the visual viewport. */
html,body{width:100%;max-width:100%;overflow-x:clip}
#app,.app,.app main{max-width:100%;min-width:0}
.app{width:100%;overflow-wrap:anywhere}
.app>* , .app main>* , .top>*, .hero>*, .panel>*, .card>*, .card-head>*, .heading>*, .metric{min-width:0}
.top{flex-wrap:wrap}
.top .logo{flex:0 0 48px}
.top>div:not(.logo){flex:1 1 145px;min-width:0}
.top h1,.eyebrow,.tag,.mode{overflow-wrap:anywhere}
.mode{flex:0 0 auto;max-width:100%;white-space:normal;text-align:center}
.metrics{grid-template-columns:repeat(3,minmax(0,1fr))}
.cols{grid-template-columns:repeat(2,minmax(0,1fr))}
.card-head{flex-wrap:wrap}
.form input,.form select,.form textarea,.input{max-width:100%;min-width:0}
.btn,.icon-btn,.result{max-width:100%;overflow-wrap:anywhere}
.bottom{max-width:100vw;min-width:0;padding-left:max(13px,env(safe-area-inset-left));padding-right:max(13px,env(safe-area-inset-right))}
.bottom button{min-width:0;flex:1 1 0}
@media(max-width:430px){
 .app{padding-left:max(15px,env(safe-area-inset-left));padding-right:max(15px,env(safe-area-inset-right))}
 .cols{grid-template-columns:minmax(0,1fr)}
 .hero{min-width:0}
 .hero h2{overflow-wrap:anywhere}
 .metric{padding-left:8px;padding-right:8px}
 .metric strong{font-size:clamp(20px,6vw,24px)}
 .metric small{overflow-wrap:anywhere}
}
@supports not (overflow:clip){html,body{overflow-x:hidden}}
