:root{--navy:#142640;--navy-soft:#203a5f;--blue:#0d6794;--cyan:#4abac8;--cyan-soft:#e7f7fa;--green:#008b47;--amber:#f2ad16;--red:#e51b2a;--background:#f5f8fb;--surface:#fff;--surface-muted:#eef3f7;--text:#142640;--text-secondary:#52657a;--outline:#d5e0e8;color:var(--text);background:var(--background);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*{box-sizing:border-box}html{background:var(--background);min-width:320px;min-height:100%}body{background:var(--background);min-width:320px;min-height:100dvh;margin:0}button,input{font:inherit}button{-webkit-tap-highlight-color:transparent}#root{min-height:100dvh}.image-page{background:var(--background);min-height:100dvh}.image-topbar{z-index:15;border-bottom:1px solid var(--outline);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);background:#fffffff5;position:sticky;top:0}.image-topbar__content{align-items:center;gap:10px;width:min(760px,100% - 32px);min-height:72px;margin:0 auto;display:flex}.image-topbar h1{color:var(--navy);margin:0;font-size:1.3rem}.image-icon-button{width:42px;height:42px;color:var(--navy);cursor:pointer;background:0 0;border:0;border-radius:12px;place-items:center;display:grid}.image-icon-button:hover{background:var(--surface-muted)}.image-main{gap:15px;width:min(760px,100% - 32px);margin:0 auto;padding:24px 0 56px;display:grid}.image-instruction,.image-privacy{color:var(--text-secondary);margin:0;line-height:1.5}.image-instruction{font-size:.96rem}.image-privacy{font-size:.78rem}.image-preview-card{background:var(--surface);border:1px solid var(--outline);border-radius:18px;overflow:hidden}.image-preview{background-color:#f8fafc;background-image:linear-gradient(45deg,#eef3f7 25%,#0000 25%),linear-gradient(-45deg,#eef3f7 25%,#0000 25%),linear-gradient(45deg,#0000 75%,#eef3f7 75%),linear-gradient(-45deg,#0000 75%,#eef3f7 75%);background-position:0 0,0 12px,12px -12px,-12px 0;background-repeat:repeat,repeat,repeat,repeat;background-size:24px 24px;background-attachment:scroll,scroll,scroll,scroll;background-origin:padding-box,padding-box,padding-box,padding-box;background-clip:border-box,border-box,border-box,border-box;place-items:center;height:min(48vh,430px);min-height:250px;display:grid}.image-preview img{object-fit:contain;width:100%;height:100%}.image-file-info{border-top:1px solid var(--outline);gap:4px;padding:15px 17px;display:grid}.image-file-info strong{color:var(--navy);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.image-file-info span{color:var(--text-secondary);font-size:.82rem}.image-error{color:var(--red);background:#fff0f1;border:1px solid #f2a0a8;border-radius:12px;align-items:center;gap:10px;padding:13px 14px;display:flex}.image-error .line-icon{width:22px;height:22px}.image-error span{color:var(--navy);font-size:.88rem}.image-primary-button,.image-secondary-button{cursor:pointer;border-radius:999px;justify-content:center;align-items:center;gap:9px;width:100%;min-height:48px;padding:11px 18px;font-weight:750;display:flex}.image-primary-button{color:#fff;background:var(--navy);border:1px solid var(--navy);box-shadow:0 8px 20px #14264026}.image-secondary-button{color:var(--text-secondary);background:0 0;border:1px solid #bdc9d4}.image-primary-button:disabled,.image-secondary-button:disabled,.image-icon-button:disabled{cursor:not-allowed;opacity:.44}.image-primary-button .line-icon,.image-secondary-button .line-icon{width:21px;height:21px}.image-icon-button:focus-visible,.image-primary-button:focus-visible,.image-secondary-button:focus-visible{outline-offset:2px;outline:3px solid #4abac857}.visually-hidden{clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:fixed;overflow:hidden}.image-loading-overlay{z-index:100;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#08152657;place-items:center;padding:20px;display:grid;position:fixed;inset:0}.image-loading-card{min-width:min(320px,100%);color:var(--navy);text-align:center;background:var(--surface);border-radius:18px;justify-items:center;gap:13px;padding:26px;display:grid;box-shadow:0 18px 45px #08152638}.image-loading-card span:last-child{color:var(--text-secondary);font-size:.8rem}.image-spinner{border:4px solid #dbe5ed;border-top-color:var(--blue);border-radius:50%;width:42px;height:42px;animation:.8s linear infinite image-spin}@keyframes image-spin{to{transform:rotate(360deg)}}@media (width<=600px){.image-topbar__content{min-height:68px}.image-topbar h1{font-size:1.2rem}.image-main{padding-top:20px}.image-preview{height:36vh;min-height:220px}}@media (prefers-reduced-motion:reduce){.image-spinner{animation-duration:1.8s}}.manual-page{background:var(--background);min-height:100dvh}.manual-topbar{z-index:15;border-bottom:1px solid var(--outline);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);background:#fffffff5;position:sticky;top:0}.manual-topbar__content{align-items:center;gap:10px;width:min(760px,100% - 32px);min-height:72px;margin:0 auto;display:flex}.manual-topbar h1{color:var(--navy);margin:0;font-size:1.3rem}.icon-button{width:42px;height:42px;color:var(--navy);cursor:pointer;background:0 0;border:0;border-radius:12px;place-items:center;display:grid}.icon-button:hover{background:var(--surface-muted)}.icon-button:focus-visible,.primary-button:focus-visible,.secondary-button:focus-visible,.form-field input:focus-visible{outline-offset:2px;outline:3px solid #4abac857}.manual-main{width:min(760px,100% - 32px);margin:0 auto;padding:26px 0 56px}.manual-content{gap:16px;display:grid}.screen-instruction,.helper-text{color:var(--text-secondary);margin:0;font-size:.96rem;line-height:1.55}.helper-text--blocked{color:var(--red);font-weight:700}.form-fields{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;display:grid}.form-field{display:block;position:relative}.form-field span{z-index:1;color:var(--text-secondary);background:var(--background);padding:0 5px;font-size:.73rem;line-height:1;position:absolute;top:-7px;left:13px}.form-field input{width:100%;min-height:58px;color:var(--navy);background:0 0;border:1px solid #cbd9e3;border-radius:9px;padding:15px 16px 12px;font-size:.98rem;transition:border-color .15s,box-shadow .15s}.form-field input:hover{border-color:#9eb5c7}.form-field input:focus{border-color:var(--blue);box-shadow:0 0 0 1px var(--blue)}.form-field:first-child{grid-column:1/-1}.primary-button,.secondary-button{cursor:pointer;border-radius:999px;justify-content:center;align-items:center;gap:9px;width:100%;min-height:48px;padding:11px 18px;font-weight:750;transition:transform .15s,box-shadow .15s,opacity .15s;display:flex}.primary-button{color:#fff;background:var(--navy);border:1px solid var(--navy);box-shadow:0 8px 20px #14264026}.primary-button:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 12px 24px #14264036}.primary-button:disabled{cursor:not-allowed;opacity:.42}.secondary-button{color:var(--text-secondary);background:0 0;border:1px solid #bdc9d4}.secondary-button:hover{color:var(--navy);background:var(--surface)}.primary-button .line-icon,.secondary-button .line-icon{width:21px;height:21px}.summary-card,.reused-card{background:var(--surface);border:1px solid var(--outline);border-radius:18px;gap:11px;padding:20px;display:grid}.summary-card h2,.reused-card h2{color:var(--navy);margin:0;font-size:1rem}.reused-card{background:var(--cyan-soft);border-color:#bcdde4}.reused-card h2{align-items:center;gap:8px;display:flex}.reused-card h2 .line-icon{width:20px;height:20px;color:var(--blue)}.status-card{border:1px solid;border-radius:12px;align-items:flex-start;gap:11px;padding:12px 14px;display:flex}.status-card>.line-icon{width:23px;height:23px;margin-top:1px}.status-card>div{gap:2px;min-width:0;display:grid}.status-card strong{color:var(--navy);font-size:.94rem}.status-card span{color:var(--text);font-size:.84rem;line-height:1.4}.status-card--success{color:var(--green);background:#e6f5ed;border-color:#8dd1ad}.status-card--warning{color:#d48700;background:#fff5df;border-color:#f3c568}.status-card--error{color:var(--red);background:#fff0f1;border-color:#f4a0a8}.status-card--info{color:var(--blue);background:#eaf5fa;border-color:#9bcfe0}.error-card{color:var(--red);background:#fff0f1;border:1px solid #f2a0a8;border-radius:12px;align-items:center;gap:11px;padding:13px 14px;display:flex}.error-card .line-icon{width:22px;height:22px}.error-card span{color:var(--navy);font-size:.88rem;line-height:1.4}.info-row{grid-template-columns:minmax(130px,.4fr) minmax(0,.6fr);gap:14px;display:grid}.info-row span,.info-block span{color:var(--text-secondary);font-size:.84rem}.info-row strong,.info-block strong{min-width:0;color:var(--navy);overflow-wrap:anywhere;font-size:.86rem}.info-block{gap:3px;display:grid}.result-content{justify-items:center;max-width:620px;margin:0 auto}.result-content>*{width:100%}.result-icon{width:92px;height:92px;color:var(--green);background:#dff1e8;border-radius:50%;place-items:center;display:grid}.result-icon .line-icon{width:55px;height:55px}.result-icon--warning{color:#d48700;background:#fff0ce}.result-content h2{max-width:480px;color:var(--navy);text-align:center;margin:2px auto;font-size:clamp(1.35rem,4vw,1.75rem);line-height:1.25}.result-summary hr{border:0;border-top:1px solid var(--outline);width:100%;margin:2px 0}.loading-overlay{z-index:100;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#08152657;place-items:center;padding:20px;display:grid;position:fixed;inset:0}.loading-card{min-width:min(310px,100%);color:var(--navy);background:var(--surface);border-radius:18px;justify-items:center;gap:15px;padding:26px;display:grid;box-shadow:0 18px 45px #08152638}.spinner{border:4px solid #dbe5ed;border-top-color:var(--blue);border-radius:50%;width:42px;height:42px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}@media (width<=600px){.manual-main{padding-top:20px}.manual-topbar__content{min-height:68px}.manual-topbar h1{font-size:1.2rem}.form-fields{grid-template-columns:1fr}.form-field:first-child{grid-column:auto}.summary-card,.reused-card{padding:16px}.info-row{grid-template-columns:minmax(110px,.42fr) minmax(0,.58fr);gap:10px}}@media (prefers-reduced-motion:reduce){.spinner{animation-duration:1.8s}}.app-shell{min-height:100dvh;padding-bottom:88px}.topbar{z-index:10;border-bottom:1px solid var(--outline);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);background:#fffffff0;position:sticky;top:0}.topbar__content{justify-content:space-between;align-items:center;gap:24px;width:min(1120px,100% - 40px);min-height:78px;margin:0 auto;display:flex}.brand{align-items:center;gap:12px;display:flex}.brand__mark{border-radius:12px;width:44px;height:44px;box-shadow:0 7px 18px #1426402e}.brand div{gap:1px;display:grid}.brand strong{color:var(--navy);font-size:1.02rem;line-height:1.2}.brand span{color:var(--text-secondary);letter-spacing:.08em;font-size:.76rem}.connection{color:var(--green);background:#edf9f2;border:1px solid #bfe8d1;border-radius:999px;align-items:center;gap:8px;padding:8px 13px;font-size:.84rem;font-weight:700;display:inline-flex}.connection__dot{background:currentColor;border-radius:50%;width:8px;height:8px;box-shadow:0 0 0 4px #008b471f}.connection--offline{color:var(--red);background:#fff1f2;border-color:#ffc8ce}.dashboard{width:min(1120px,100% - 40px);margin:0 auto;padding:clamp(34px,5vw,64px) 0 48px}.intro{max-width:760px;margin-bottom:clamp(28px,4vw,44px)}.intro__eyebrow{color:var(--blue);letter-spacing:.12em;text-transform:uppercase;margin-bottom:10px;font-size:.78rem;font-weight:800;display:inline-block}.intro h1{max-width:720px;color:var(--navy);letter-spacing:-.035em;margin:0;font-size:clamp(2rem,4vw,3.35rem);line-height:1.08}.intro p{color:var(--text-secondary);margin:16px 0 0;font-size:clamp(1rem,1.6vw,1.12rem);line-height:1.55}.workspace-grid{grid-template-columns:minmax(0,1.15fr) minmax(320px,.85fr);align-items:start;gap:24px;display:grid}.actions-panel{gap:14px;display:grid}.action-card{width:100%;min-height:104px;color:var(--navy);text-align:left;background:var(--surface);border:1.5px solid var(--cyan);cursor:pointer;border-radius:18px;align-items:center;gap:17px;padding:20px 22px;transition:transform .16s,box-shadow .16s,border-color .16s;display:flex;box-shadow:0 7px 22px #1426400d}.action-card:hover{border-color:var(--blue);transform:translateY(-2px);box-shadow:0 14px 30px #1426401a}.action-card:focus-visible,.search-preview:focus-visible,.bottom-nav__item:focus-visible{outline-offset:3px;outline:3px solid #4abac861}.action-card--primary{color:#fff;background:linear-gradient(135deg, var(--navy), var(--navy-soft));border-color:var(--navy);box-shadow:0 12px 28px #14264033}.action-card--primary:hover{border-color:var(--navy-soft);box-shadow:0 17px 34px #1426403d}.action-card__icon,.dispatch-card__icon{width:50px;height:50px;color:var(--blue);background:var(--cyan-soft);border-radius:15px;flex:none;place-items:center;display:grid}.action-card--primary .action-card__icon{color:#fff;background:#ffffff1f}.action-card__content{flex:1;gap:5px;min-width:0;display:grid}.action-card__content strong{font-size:1.02rem}.action-card__content small{color:var(--text-secondary);font-size:.86rem;line-height:1.4}.action-card--primary small{color:#ffffffbd}.line-icon{flex:none;width:24px;height:24px}.action-card>.line-icon{width:20px;height:20px}.dispatch-card{background:var(--surface);border:1px solid var(--outline);border-radius:22px;padding:24px;box-shadow:0 12px 34px #14264012}.dispatch-card__header{align-items:center;gap:12px;display:flex}.dispatch-card__header>div{flex:1;gap:2px;min-width:0;display:grid}.dispatch-card h2{color:var(--navy);margin:0;font-size:1.2rem}.dispatch-card__header div span{color:var(--text-secondary);font-size:.78rem}.coming-soon{color:#7b5811;white-space:nowrap;background:#fff4d9;border-radius:999px;padding:6px 9px;font-size:.7rem;font-weight:800}.dispatch-card>p{color:var(--text-secondary);margin:20px 0;font-size:.9rem;line-height:1.55}.search-preview{width:100%;color:var(--text-secondary);text-align:left;background:var(--surface-muted);border:1px solid var(--outline);cursor:pointer;border-radius:12px;align-items:center;gap:10px;padding:13px 14px;display:flex}.search-preview .line-icon{width:19px;height:19px}.dispatch-card__meta{border-top:1px solid var(--outline);gap:10px;margin-top:18px;padding-top:17px;display:flex}.dispatch-card__meta span{color:var(--text-secondary);background:var(--background);border-radius:8px;padding:7px 9px;font-size:.72rem}.dispatch-card__meta b{color:var(--navy)}.bottom-nav{z-index:20;min-height:72px;padding:7px max(18px, env(safe-area-inset-right)) calc(7px + env(safe-area-inset-bottom)) max(18px, env(safe-area-inset-left));border-top:1px solid var(--outline);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);background:#fffffff5;justify-content:center;gap:10px;display:flex;position:fixed;bottom:0;left:0;right:0}.bottom-nav__item{min-width:112px;color:var(--text-secondary);cursor:pointer;background:0 0;border:0;border-radius:12px;place-items:center;gap:2px;padding:6px 18px;font-size:.72rem;display:grid}.bottom-nav__item .line-icon{width:22px;height:22px}.bottom-nav__item--active{color:var(--blue);background:var(--cyan-soft);font-weight:800}.toast{z-index:30;left:50%;bottom:calc(88px + env(safe-area-inset-bottom));color:#fff;text-align:center;background:var(--navy);opacity:0;pointer-events:none;border-radius:12px;max-width:min(440px,100% - 32px);padding:13px 18px;transition:opacity .18s,transform .18s;position:fixed;transform:translate(-50%,12px);box-shadow:0 14px 34px #14264047}.toast--visible{opacity:1;transform:translate(-50%)}@media (width<=820px){.workspace-grid{grid-template-columns:1fr}}@media (width<=600px){.topbar__content,.dashboard{width:min(100% - 32px,1120px)}.topbar__content{min-height:70px}.brand__mark{width:40px;height:40px}.connection{padding:7px 10px;font-size:.74rem}.dashboard{padding-top:30px}.intro h1{font-size:clamp(1.85rem,9vw,2.4rem)}.action-card{border-radius:16px;gap:13px;min-height:92px;padding:16px}.action-card__icon{border-radius:13px;width:44px;height:44px}.action-card__content small{font-size:.78rem}.dispatch-card{border-radius:18px;padding:18px}.dispatch-card__icon{width:44px;height:44px}.coming-soon{align-self:flex-start;font-size:.64rem}.dispatch-card__meta{flex-wrap:wrap}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important}}
