*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;height:100%;background:#0e0e10;color:#e8e8ea;font:15px/1.35 -apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;overflow:hidden}
#app{height:100%;display:flex;flex-direction:column}
#top{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;padding-top:max(10px,env(safe-area-inset-top));flex:0 0 auto}
#top h1{margin:0;font-size:17px;font-weight:600;letter-spacing:.02em}
.ghost{background:transparent;border:0;color:#9a9aa0;font-size:18px;padding:6px 8px}
.screen{display:none;flex:1;flex-direction:column;min-height:0}
.screen.on{display:flex}
#live-wrap,#mask-wrap,#view-wrap{position:relative;flex:1;min-height:0;background:#111}
#live{width:100%;height:100%;object-fit:cover;background:#000}
#live-hint{position:absolute;left:0;right:0;bottom:18px;text-align:center;color:#fff;text-shadow:0 1px 4px #000;font-size:13px;pointer-events:none}
#capture-bar,#mask-bar,#job-bar-actions,#view-bar{display:flex;gap:10px;justify-content:center;align-items:center;padding:14px 14px calc(14px + env(safe-area-inset-bottom));flex:0 0 auto;background:#0e0e10}
.btn,.primary,.secondary,label.btn{appearance:none;border:0;border-radius:999px;padding:12px 18px;font:600 14px/1 inherit;color:#0e0e10;background:#e8e8ea;cursor:pointer;text-align:center}
.secondary,label.btn{background:#222226;color:#e8e8ea}
.primary:disabled,.secondary:disabled{opacity:.4;cursor:default}
#btn-shutter{min-width:120px}
.checker{background-color:#1a1a1e;background-image:linear-gradient(45deg,#2a2a30 25%,transparent 25%),linear-gradient(-45deg,#2a2a30 25%,transparent 25%),linear-gradient(45deg,transparent 75%,#2a2a30 75%),linear-gradient(-45deg,transparent 75%,#2a2a30 75%);background-size:24px 24px;background-position:0 0,0 12px,12px -12px,-12px 0}
#mask-canvas{display:block;max-width:100%;max-height:100%;margin:0 auto;touch-action:none}
#mask-wrap{display:flex;align-items:center;justify-content:center;overflow:hidden}
#mask-status{position:absolute;left:0;right:0;top:50%;transform:translateY(-50%);text-align:center;color:#cfcfd4;font-size:14px;pointer-events:none}
#mask-status.hidden{display:none}
#job-card{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;padding:24px}
#job-thumb{width:min(56vw,220px);aspect-ratio:1;border-radius:12px;overflow:hidden;display:flex;align-items:center;justify-content:center}
#job-thumb img{width:100%;height:100%;object-fit:contain}
#job-status{font-size:16px;font-weight:600}
#job-meta{font-size:12px;color:#9a9aa0;min-height:1.2em}
#job-bar{width:min(70vw,280px);height:4px;background:#222226;border-radius:2px;overflow:hidden}
#job-bar-fill{display:block;height:100%;width:8%;background:#e8e8ea;transition:width .3s}
#view-wrap{background:#141416}
#view-wrap canvas{display:block;width:100%;height:100%}
#view-overlay{position:absolute;inset:0;display:flex;flex-direction:column;justify-content:flex-end;pointer-events:none;z-index:2}
#view-hint{text-align:center;color:#fff;text-shadow:0 1px 4px #000;font-size:13px;padding:0 16px 10px;min-height:1.2em}
#view-bar{pointer-events:auto}
dialog{border:1px solid #2a2a30;border-radius:14px;background:#16161a;color:#e8e8ea;padding:18px;width:min(92vw,360px)}
dialog::backdrop{background:rgba(0,0,0,.55)}
#setup-form{display:flex;flex-direction:column;gap:12px}
#setup-form h2{margin:0;font-size:16px}
#setup-form label{display:flex;flex-direction:column;gap:6px;font-size:12px;color:#9a9aa0}
#setup-form input{border:1px solid #2a2a30;border-radius:8px;background:#0e0e10;color:#e8e8ea;padding:10px 12px;font:14px inherit}
.dlg-actions{display:flex;gap:8px;justify-content:flex-end}
#setup-note{margin:0;font-size:11px;color:#6e6e74}

#setup-status{margin:0;font-size:12px;color:#cfcfd4;min-height:1.1em}
[hidden]{display:none !important}
