:root{--color-ink: #111418;--color-ink-2: #3f4651;--color-ink-3: #79828f;--color-line: #e6e9ee;--color-line-2: #eef1f5;--color-bg: #f5f7fa;--color-surface: #ffffff;--color-surface-2: #f9fafc;--color-primary: #2f54eb;--color-primary-ink: #1d39c4;--color-primary-soft: #eaefff;--color-accent: #f59f00;--color-accent-soft: #fff4e0;--color-success: #2f9e44;--color-success-soft: #e8f6ec;--color-warn: #e8590c;--color-warn-soft: #fdecdf;--color-danger: #e03131;--color-danger-soft: #fde7e7;--color-talent: #f59f00;--color-talent-ink: #9a6700;--color-talent-soft: #fff4e0;--font-sans: "Apple SD Gothic Neo", "Pretendard", -apple-system, "Segoe UI", Roboto, "Malgun Gothic", sans-serif;--fs-xs: 12px;--fs-sm: 13px;--fs-md: 14px;--fs-lg: 16px;--fs-xl: 19px;--fs-2xl: 24px;--fs-3xl: 30px;--fs-4xl: 38px;--sp-1: 4px;--sp-2: 8px;--sp-3: 12px;--sp-4: 16px;--sp-5: 20px;--sp-6: 24px;--sp-8: 32px;--sp-10: 40px;--r-sm: 8px;--r-md: 12px;--r-lg: 16px;--r-xl: 22px;--r-pill: 999px;--shadow-sm: 0 1px 2px rgba(17,20,24,.05), 0 1px 3px rgba(17,20,24,.06);--shadow-md: 0 6px 18px rgba(17,20,24,.08);--shadow-lg: 0 16px 40px rgba(17,20,24,.12);--frame-w: 480px;--shell-side-w: 248px;--shell-top-h: 64px;--qr-head-h: 58px;--qr-tab-h: 60px;--shell-tab-h: 62px;--shell-content-max: 960px;--bp-tablet: 768px;--bp-desktop: 1024px;--bp-wide: 1280px;--frame-w-md: 560px;--frame-w-wide: 1120px;--frame-w-wide-xl: 1240px;--qr-topnav-h: 52px;--focus-ring: 0 0 0 3px var(--color-primary-soft)}:root{--ink: var(--color-ink);--ink-2: var(--color-ink-2);--ink-3: var(--color-ink-3);--line: var(--color-line);--line-2: var(--color-line-2);--bg: var(--color-bg);--surface: var(--color-surface);--surface-2: var(--color-surface-2);--primary: var(--color-primary);--primary-ink: var(--color-primary-ink);--primary-soft: var(--color-primary-soft);--accent: var(--color-accent);--accent-soft: var(--color-accent-soft);--success: var(--color-success);--success-soft: var(--color-success-soft);--warn: var(--color-warn);--warn-soft: var(--color-warn-soft);--danger: var(--color-danger);--danger-soft: var(--color-danger-soft);--talent: var(--color-talent);--talent-ink: var(--color-talent-ink);--talent-soft: var(--color-talent-soft);--font: var(--font-sans)}*{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%}body{font-family:var(--font);color:var(--ink);background:var(--bg);font-size:var(--fs-md);line-height:1.55;-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}button{font-family:inherit;cursor:pointer;border:none;background:none}img,svg{display:block;max-width:100%}ul{list-style:none}a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,[tabindex]:focus-visible{outline:none;box-shadow:var(--focus-ring)}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow-sm)}.card-pad{padding:var(--sp-5)}.card-head{display:flex;align-items:center;justify-content:space-between;padding:var(--sp-4) var(--sp-5);border-bottom:1px solid var(--line-2)}.card-head h3{font-size:var(--fs-lg);font-weight:700}.grid{display:grid;gap:var(--sp-4)}.grid-2{grid-template-columns:repeat(2,1fr)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:40px;padding:0 18px;border-radius:var(--r-md);font-weight:700;font-size:var(--fs-md);border:1px solid transparent;white-space:nowrap;transition:.15s}.btn-sm{height:32px;padding:0 12px;font-size:var(--fs-sm)}.btn-lg{height:50px;padding:0 22px;font-size:var(--fs-lg);border-radius:var(--r-lg)}.btn-primary{background:var(--primary);color:#fff}.btn-primary:hover{background:var(--primary-ink)}.btn-ghost{background:var(--surface);color:var(--ink);border-color:var(--line)}.btn-ghost:hover{background:var(--surface-2)}.btn-accent{background:var(--accent);color:#3a2a00}.btn-block{width:100%}.btn:disabled{opacity:.5;cursor:not-allowed}.badge{display:inline-flex;align-items:center;gap:6px;height:24px;padding:0 10px;border-radius:var(--r-pill);font-size:var(--fs-xs);font-weight:700}.badge .b-dot{width:6px;height:6px;border-radius:50%;background:currentColor}.badge.primary{background:var(--primary-soft);color:var(--primary-ink)}.badge.success{background:var(--success-soft);color:var(--success)}.badge.warn{background:var(--warn-soft);color:var(--warn)}.badge.danger{background:var(--danger-soft);color:var(--danger)}.badge.neutral{background:var(--surface-2);color:var(--ink-2);border:1px solid var(--line)}.badge.accent{background:var(--accent-soft);color:#9a6700}.field{margin-bottom:var(--sp-4)}.field label{display:block;font-size:var(--fs-sm);font-weight:700;margin-bottom:6px;color:var(--ink-2)}.input,.select,.textarea{width:100%;height:46px;padding:0 14px;border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface);font-size:var(--fs-md);color:var(--ink);transition:.15s}.textarea{height:auto;padding:12px 14px;min-height:96px;resize:vertical}.input:focus,.select:focus,.textarea:focus{outline:none;border-color:var(--primary);box-shadow:var(--focus-ring)}.input.error,.select.error{border-color:var(--danger)}.input:disabled,.select:disabled{background:var(--surface-2);color:var(--ink-3);cursor:not-allowed}.help{font-size:var(--fs-xs);color:var(--ink-3);margin-top:6px}.err-msg{font-size:var(--fs-xs);color:var(--danger);margin-top:6px;font-weight:600}.seg{display:inline-flex;background:var(--surface-2);border:1px solid var(--line);border-radius:var(--r-pill);padding:3px}.seg button{padding:7px 16px;border-radius:var(--r-pill);font-weight:700;color:var(--ink-2);font-size:var(--fs-sm)}.seg button.active{background:var(--surface);color:var(--ink);box-shadow:var(--shadow-sm)}.seg.full{display:flex;width:100%}.seg.full button{flex:1}.avatar{width:40px;height:40px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:var(--primary-soft);color:var(--primary-ink);font-weight:800;font-size:var(--fs-md);flex-shrink:0}.avatar.sm{width:30px;height:30px;font-size:var(--fs-xs)}.avatar.accent{background:var(--accent-soft);color:#9a6700}.avatar.success{background:var(--success-soft);color:var(--success)}.row{display:flex;align-items:center;gap:var(--sp-3)}.between{justify-content:space-between}.wrap{flex-wrap:wrap}.mt-2{margin-top:var(--sp-2)}.mt-3{margin-top:var(--sp-3)}.mt-4{margin-top:var(--sp-4)}.mt-5{margin-top:var(--sp-5)}.mt-6{margin-top:var(--sp-6)}.muted{color:var(--ink-3)}.strong{font-weight:800}.center{text-align:center}.tnum{font-variant-numeric:tabular-nums}.divider{height:1px;background:var(--line-2);margin:var(--sp-4) 0}.talent{font-variant-numeric:tabular-nums;font-weight:800;color:var(--talent-ink)}.talent .unit{font-size:.72em;font-weight:700;color:var(--talent-ink);margin-left:2px;opacity:.85}.talent.big{font-size:var(--fs-4xl);letter-spacing:-.02em}.talent.minus{color:var(--danger)}.talent.plus{color:var(--success)}.coin{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:50%;background:var(--talent);color:#fff;font-size:11px;font-weight:900;flex-shrink:0}.coin.sm{width:18px;height:18px;font-size:10px}.entry-card{display:block;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-xl);padding:var(--sp-6);box-shadow:var(--shadow-md);transition:.15s}.entry-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-lg)}.entry-card .ec-tag{font-size:var(--fs-xs);font-weight:800;letter-spacing:.04em;color:var(--ink-3)}.entry-card h3{font-size:var(--fs-xl);font-weight:800;margin:6px 0 4px}.entry-card p{color:var(--ink-2);font-size:var(--fs-sm)}.scan-stage{position:relative;background:radial-gradient(120% 120% at 50% 35%,#1b2330,#0c1017);border-radius:var(--r-xl);overflow:hidden;aspect-ratio:3/4;display:flex;align-items:center;justify-content:center}.scan-stage.full{border-radius:0;aspect-ratio:auto;min-height:58vh}.scan-stage video{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover}.scan-reticle{position:relative;width:62%;aspect-ratio:1/1}.scan-corner{position:absolute;width:34px;height:34px;border:4px solid var(--accent)}.scan-corner.tl{left:0;top:0;border-right:none;border-bottom:none;border-top-left-radius:10px}.scan-corner.tr{right:0;top:0;border-left:none;border-bottom:none;border-top-right-radius:10px}.scan-corner.bl{left:0;bottom:0;border-right:none;border-top:none;border-bottom-left-radius:10px}.scan-corner.br{right:0;bottom:0;border-left:none;border-top:none;border-bottom-right-radius:10px}.scan-laser{position:absolute;left:6%;right:6%;height:3px;border-radius:2px;top:50%;background:linear-gradient(90deg,transparent,var(--accent),transparent);box-shadow:0 0 14px 2px #f59f008c;animation:scanmove 2.4s ease-in-out infinite}@keyframes scanmove{0%{top:14%}50%{top:86%}to{top:14%}}.scan-hint{position:absolute;left:0;right:0;bottom:18px;text-align:center;color:#dfe5ee;font-size:var(--fs-sm);font-weight:600;padding:0 var(--sp-4)}.scan-topbar{position:absolute;top:14px;left:14px;right:14px;display:flex;align-items:center;justify-content:space-between;color:#fff;z-index:2}.scan-topbar .live{display:flex;align-items:center;gap:7px;font-size:var(--fs-xs);font-weight:800;background:#00000059;padding:5px 10px;border-radius:var(--r-pill)}.scan-topbar .live .rec{width:8px;height:8px;border-radius:50%;background:var(--danger);animation:blink 1.2s infinite}@keyframes blink{50%{opacity:.25}}.scan-denied{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--sp-3);color:#dfe5ee;text-align:center;padding:var(--sp-6)}.scan-result{position:absolute;top:0;right:0;bottom:0;left:0;z-index:3;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--sp-3);text-align:center;padding:var(--sp-6);background:#0c1017b8;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);animation:sr-in .18s ease-out}.scan-result .sr-title{color:#fff;font-size:var(--fs-xl);font-weight:800}.scan-result .sr-sub{color:#dfe5ee;font-size:var(--fs-sm);font-weight:600;line-height:1.5}.scan-result .sr-actions{display:flex;gap:var(--sp-2);margin-top:var(--sp-3)}@keyframes sr-in{0%{opacity:0;transform:scale(.96)}to{opacity:1;transform:none}}.ring--lg{width:84px;height:84px}.ring.fail{background:var(--danger-soft)}.ring.fail .xmk{position:relative;width:30px;height:30px}.ring.fail .xmk:before,.ring.fail .xmk:after{content:"";position:absolute;left:50%;top:50%;width:30px;height:5px;border-radius:3px;background:var(--danger);transform-origin:center}.ring.fail .xmk:before{transform:translate(-50%,-50%) rotate(45deg)}.ring.fail .xmk:after{transform:translate(-50%,-50%) rotate(-45deg)}.scan-result.ok .ring{animation:ring-pop .22s ease-out}@keyframes ring-pop{0%{transform:scale(.6)}60%{transform:scale(1.08)}to{transform:scale(1)}}.scan-result.fail .ring{animation:ring-shake .3s ease-in-out}@keyframes ring-shake{0%,to{transform:translate(0)}25%{transform:translate(-5px)}75%{transform:translate(5px)}}.scan-timer{display:inline-flex;align-items:center;gap:6px;font-size:var(--fs-xs);font-weight:800;color:#fff;background:#00000059;padding:5px 10px;border-radius:var(--r-pill);font-variant-numeric:tabular-nums}.scan-timer.danger{background:#e03131d9}@media (prefers-reduced-motion: reduce){.scan-result,.scan-result.ok .ring,.scan-result.fail .ring{animation:none}}.voice-toast{display:flex;align-items:center;gap:var(--sp-3);background:var(--ink);color:#fff;border-radius:var(--r-lg);padding:var(--sp-3) var(--sp-4);box-shadow:var(--shadow-lg);margin-top:var(--sp-4)}.voice-toast.warn-tone{background:#5a3208}.voice-toast .eq{display:flex;align-items:flex-end;gap:3px;height:22px}.voice-toast .eq i{width:3px;background:var(--accent);border-radius:2px;animation:eq 1s ease-in-out infinite}.voice-toast .eq i:nth-child(1){height:8px;animation-delay:0s}.voice-toast .eq i:nth-child(2){height:18px;animation-delay:.15s}.voice-toast .eq i:nth-child(3){height:12px;animation-delay:.3s}.voice-toast .eq i:nth-child(4){height:20px;animation-delay:.45s}.voice-toast .eq i:nth-child(5){height:9px;animation-delay:.6s}@keyframes eq{0%,to{transform:scaleY(.4)}50%{transform:scaleY(1)}}.voice-toast .vt-t{font-weight:800;font-size:var(--fs-sm)}.voice-toast .vt-s{font-size:var(--fs-xs);opacity:.8}.result-sheet{margin-top:var(--sp-4);background:var(--surface);border:1px solid var(--line);border-radius:var(--r-xl);box-shadow:var(--shadow-md);overflow:hidden}.result-sheet .rs-head{padding:var(--sp-5) var(--sp-5) var(--sp-3);text-align:center}.result-sheet .rs-sub{color:var(--ink-3);font-size:var(--fs-sm)}.pay-line{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-4) var(--sp-5);border-top:1px solid var(--line-2)}.pay-line .right{margin-left:auto;text-align:right}.bal-after{background:var(--surface-2);border-top:1px solid var(--line-2);padding:var(--sp-4) var(--sp-5);display:flex;align-items:center;justify-content:space-between}.ring{width:64px;height:64px;border-radius:50%;display:flex;align-items:center;justify-content:center;margin:0 auto var(--sp-3)}.ring.ok{background:var(--success-soft)}.ring.ok .chk{width:26px;height:14px;border-left:5px solid var(--success);border-bottom:5px solid var(--success);transform:rotate(-45deg);margin-top:-6px}.ring.bank{background:var(--primary-soft);color:var(--primary-ink);font-weight:900;font-size:var(--fs-xl)}.ring.dup{background:var(--warn-soft);color:var(--warn);font-weight:900;font-size:var(--fs-2xl)}.ledger .l-row{display:flex;align-items:center;gap:var(--sp-3);padding:10px var(--sp-4);border-bottom:1px solid var(--line-2)}.ledger .l-row:last-child{border-bottom:none}.ledger .l-row .right{margin-left:auto;text-align:right}.qr-wrap{min-height:100vh;display:flex;flex-direction:column;max-width:var(--frame-w);margin:0 auto;background:var(--surface);box-shadow:0 0 0 1px var(--line)}@media (min-width: 481px){.qr-wrap{min-height:auto;margin:24px auto;border-radius:var(--r-xl);overflow:hidden;box-shadow:var(--shadow-lg);min-height:calc(100vh - 48px)}}.qr-head{position:sticky;top:0;z-index:40;display:flex;align-items:center;gap:var(--sp-3);height:var(--qr-head-h);padding:0 var(--sp-4);background:#fffffff2;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid var(--line)}.qr-head .brand{display:flex;align-items:center;gap:8px}.qr-head .brand img{height:30px;width:auto}.qr-head .h-title{font-weight:800;font-size:var(--fs-lg)}.qr-head .h-right{margin-left:auto;display:flex;align-items:center;gap:var(--sp-2)}.qr-body{flex:1;padding:var(--sp-4) var(--sp-4) calc(var(--sp-4) + 64px)}.qr-body.flush{padding:0 0 64px}.qr-tabbar{position:sticky;bottom:0;z-index:40;display:flex;height:var(--qr-tab-h);background:#fffffff7;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-top:1px solid var(--line)}.qr-tabbar a,.qr-tabbar button{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;color:var(--ink-3);font-size:11px;font-weight:700;background:none}.qr-tabbar a .pip,.qr-tabbar button .pip{width:22px;height:4px;border-radius:var(--r-pill);background:transparent}.qr-tabbar a.active,.qr-tabbar button.active{color:var(--primary-ink)}.qr-tabbar a.active .pip,.qr-tabbar button.active .pip{background:var(--primary)}.hero-mini{background:linear-gradient(135deg,#2f54eb,#1d39c4);color:#fff;border-radius:var(--r-xl);padding:var(--sp-6);box-shadow:var(--shadow-md);margin-bottom:var(--sp-5)}.hero-mini .badge{background:#ffffff2e;color:#fff}.hero-mini h2{font-size:var(--fs-2xl);font-weight:800;margin:10px 0 6px;line-height:1.3}.hero-mini p{opacity:.92;font-size:var(--fs-sm)}.hero-mini .coin-row{display:flex;align-items:center;gap:8px;margin-top:var(--sp-4);font-weight:800}.landing-body{display:flex;flex-direction:column}.entry-list{display:flex;flex-direction:column;gap:var(--sp-4)}.entry-card .ec-top{display:flex;align-items:center;gap:var(--sp-3)}.entry-card .ec-emblem{width:48px;height:48px;border-radius:14px;display:flex;align-items:center;justify-content:center;font-weight:900;font-size:var(--fs-lg);flex-shrink:0}.entry-card .go{margin-left:auto;color:var(--ink-3);font-size:22px;font-weight:800}.foot-note{margin-top:auto;padding-top:var(--sp-6);text-align:center;color:var(--ink-3);font-size:var(--fs-xs);line-height:1.7}.scan-wrap{padding:var(--sp-4)}.sim-lab,.step-lab{font-size:var(--fs-xs);font-weight:800;color:var(--ink-3);letter-spacing:.04em;margin:var(--sp-4) 0 var(--sp-2)}.sim-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-2)}.sim-btn{display:flex;align-items:center;gap:8px;padding:10px var(--sp-3);border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface);text-align:left;font-weight:700;font-size:var(--fs-sm)}.sim-btn .qmini{width:26px;height:26px;border-radius:6px;flex-shrink:0;background:linear-gradient(45deg,#111 25%,transparent 25%,transparent 75%,#111 75%),linear-gradient(45deg,#111 25%,#fff 25%,#fff 75%,#111 75%);background-size:8px 8px;background-position:0 0,4px 4px;border:2px solid #111}.sim-btn .sb{font-size:10px;color:var(--ink-3);font-weight:700}.sim-btn.teacher .qmini{border-color:var(--primary)}.login-body{display:flex;flex-direction:column}.login-hero{text-align:center;padding:var(--sp-6) 0 var(--sp-5)}.login-hero .emblem{width:64px;height:64px;border-radius:18px;background:var(--primary-soft);color:var(--primary-ink);display:flex;align-items:center;justify-content:center;font-weight:900;font-size:var(--fs-xl);margin:0 auto var(--sp-3)}.login-hero h1{font-size:var(--fs-2xl);font-weight:800}.login-hero p{color:var(--ink-2);font-size:var(--fs-sm);margin-top:6px}.login-card{padding:var(--sp-5)}.keep{display:flex;align-items:center;gap:8px;font-size:var(--fs-sm);color:var(--ink-2);font-weight:600;margin-top:var(--sp-2);cursor:pointer}.keep .box{width:18px;height:18px;border:2px solid var(--line);border-radius:5px;position:relative;flex-shrink:0}.keep input{display:none}.keep input:checked+.box{border-color:var(--primary);background:var(--primary)}.keep input:checked+.box:after{content:"";position:absolute;left:4px;top:0;width:6px;height:11px;border:solid #fff;border-width:0 2px 2px 0;transform:rotate(45deg)}.back-link{margin-top:auto;text-align:center;padding-top:var(--sp-6)}.back-link a{color:var(--ink-3);font-weight:700;font-size:var(--fs-sm)}.stat-2{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-3);margin-bottom:var(--sp-4)}.stat-2 .card{padding:var(--sp-4)}.stat-2 .k{font-size:var(--fs-xs);color:var(--ink-3);font-weight:700}.stat-2 .v{font-size:var(--fs-2xl);font-weight:800;margin-top:2px}.toolbar{display:flex;gap:var(--sp-2);margin-bottom:var(--sp-3)}.toolbar .input{height:42px}.u-row{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-3) var(--sp-4);border-bottom:1px solid var(--line-2)}.u-row:last-child{border-bottom:none}.u-row .meta{min-width:0}.u-row .meta .nm{font-weight:800}.u-row .meta .sb{font-size:var(--fs-xs);color:var(--ink-3)}.u-row .right{margin-left:auto;display:flex;align-items:center;gap:8px}.icon-btn{height:30px;padding:0 10px;border:1px solid var(--line);border-radius:var(--r-md);font-size:var(--fs-xs);font-weight:800;color:var(--ink-2);background:var(--surface)}.icon-btn.danger{color:var(--danger);border-color:var(--danger-soft)}.icon-btn.qr{color:var(--talent-ink);border-color:var(--talent-soft);background:var(--talent-soft)}.sheet{margin-top:var(--sp-4);border:1px dashed var(--primary);border-radius:var(--r-lg);background:var(--primary-soft)}.sheet .sh-head{padding:var(--sp-4) var(--sp-4) 0;font-weight:800;color:var(--primary-ink)}.sheet-body{background:var(--surface);margin:var(--sp-3);border-radius:var(--r-md);padding:var(--sp-4)}.sheet-modal{margin-top:0;width:100%;max-width:440px;max-height:88vh;overflow-y:auto;box-shadow:var(--shadow-lg)}.grid-2f{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-3)}.pick{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-4);border:1px solid var(--line);border-radius:var(--r-lg);background:var(--surface)}.pick .right{margin-left:auto;text-align:right}.amount-display{text-align:center;padding:var(--sp-4) 0}.amount-display .lab{font-size:var(--fs-sm);color:var(--ink-3);font-weight:700}.chips{display:flex;gap:8px;flex-wrap:wrap;justify-content:center;margin:var(--sp-3) 0}.chip{height:34px;padding:0 14px;border:1px solid var(--talent-soft);background:var(--talent-soft);color:var(--talent-ink);border-radius:var(--r-pill);font-weight:800;font-size:var(--fs-sm)}.chip.active{border-color:var(--accent);box-shadow:var(--focus-ring)}.h-row{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-3) var(--sp-4);border-bottom:1px solid var(--line-2)}.h-row:last-child{border-bottom:none}.h-row .right{margin-left:auto;text-align:right}.h-row .cancel{font-size:var(--fs-xs);font-weight:800;color:var(--danger);border:1px solid var(--danger-soft);border-radius:var(--r-md);height:26px;padding:0 8px;background:var(--surface)}.h-row .cancel:disabled{color:var(--ink-3);border-color:var(--line)}.item-form{display:grid;grid-template-columns:1fr 120px;gap:var(--sp-2)}.item-form .cnt{font-size:11px;color:var(--ink-3);text-align:right;margin-top:4px}.qr-imgpick{margin-top:var(--sp-4)}.qr-imgpick-label{display:block;font-size:var(--fs-sm);font-weight:700;margin-bottom:6px;color:var(--ink-2)}.qr-imgpick-label .muted{font-weight:600}.qr-imgpick-row{display:flex;align-items:center;gap:var(--sp-3);flex-wrap:wrap}.qr-imgpick-thumb{width:44px;height:44px;object-fit:cover;border-radius:var(--r-md);border:1px solid var(--line);flex:0 0 auto}.qr-imgpick-btn{cursor:pointer}.qr-imgpick-name{font-size:var(--fs-xs);max-width:160px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.qr-imgpick-hint{font-size:var(--fs-xs)}.amt-wrap{position:relative}.amt-wrap .input{padding-right:46px;text-align:right;font-weight:800;color:var(--talent-ink)}.amt-wrap .suf{position:absolute;right:12px;top:50%;transform:translateY(-50%);font-size:var(--fs-xs);font-weight:800;color:var(--ink-3)}.selbar{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-3) var(--sp-4);background:var(--surface-2);border:1px solid var(--line);border-radius:var(--r-md);cursor:pointer}.chk{display:inline-flex;align-items:center;gap:8px;font-weight:700;cursor:pointer}.chk .box{width:20px;height:20px;border:2px solid var(--line);border-radius:6px;position:relative;flex-shrink:0;background:#fff}.chk input{display:none}.chk input:checked+.box{border-color:var(--primary);background:var(--primary)}.chk input:checked+.box:after{content:"";position:absolute;left:5px;top:1px;width:6px;height:10px;border:solid #fff;border-width:0 2px 2px 0;transform:rotate(45deg)}.grp-head{display:flex;align-items:center;gap:8px;padding:var(--sp-3) var(--sp-4) 4px;background:var(--surface-2);border-bottom:1px solid var(--line-2)}.grp-head .gl{font-size:var(--fs-sm);font-weight:800}.grp-head .gt{font-size:11px;font-weight:800;color:var(--primary-ink);background:var(--primary-soft);border-radius:var(--r-pill);padding:1px 8px}.grp-head .chk{margin-left:auto;font-size:var(--fs-xs);color:var(--ink-2)}.ulist .urow{display:flex;align-items:center;gap:var(--sp-3);padding:10px var(--sp-4);border-bottom:1px solid var(--line-2)}.ulist .urow:last-child{border-bottom:none}.ulist .urow .info .nm{font-weight:700}.ulist .urow .info .sb{font-size:var(--fs-xs);color:var(--ink-3)}.ulist .urow .chk{margin-left:auto}.genbar{position:sticky;bottom:60px;z-index:30;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow-md);padding:var(--sp-3) var(--sp-4);margin-top:var(--sp-4)}.genbar .sum{font-size:var(--fs-sm);font-weight:700}.genbar .sum b{color:var(--primary-ink)}.qr-cards{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-3)}.qr-card{border:1px solid var(--line);border-radius:var(--r-lg);background:var(--surface);overflow:hidden;text-align:center}.qr-card .qc-top{display:flex;align-items:center;gap:8px;padding:10px var(--sp-3);border-bottom:1px solid var(--line-2);text-align:left}.qr-card .qc-top .nm{font-weight:800;font-size:var(--fs-sm)}.qr-card .qc-top .sb{font-size:10px;color:var(--ink-3)}.qr-card .qc-top .gt{margin-left:auto;font-size:10px;font-weight:800;color:var(--primary-ink);background:var(--primary-soft);border-radius:var(--r-pill);padding:1px 7px}.qr-card .qc-ticket{width:100%;display:block;border-top:1px solid var(--line-2);border-bottom:1px solid var(--line-2)}.qr-card canvas{width:128px;height:128px;margin:var(--sp-3) auto 6px;border-radius:8px;box-shadow:0 0 0 1px var(--line)}.qr-card .qc-item{font-size:var(--fs-xs);font-weight:800;display:flex;align-items:center;justify-content:center;gap:6px;flex-wrap:wrap;padding:0 6px}.qr-card .qc-user{color:var(--ink);background:var(--surface-2);border:1px solid var(--line);border-radius:var(--r-pill);padding:1px 8px}.qr-card .qc-amt{color:var(--talent-ink);font-weight:800}.qr-card .qc-code{font-size:10px;color:var(--ink-3);margin:2px 0 8px;font-variant-numeric:tabular-nums;word-break:break-all;padding:0 8px}.qr-card .qc-dl{display:block;width:100%;border-top:1px solid var(--line-2);padding:9px;font-size:var(--fs-xs);font-weight:800;color:var(--primary-ink);background:none}.batch{border:1px solid var(--line);border-radius:var(--r-lg);overflow:hidden;margin-bottom:var(--sp-4);background:var(--surface-2)}.batch-head{display:flex;align-items:center;gap:8px;padding:10px var(--sp-3);border-bottom:1px solid var(--line);background:var(--surface)}.batch-head .bh-tag{font-weight:800;background:var(--accent-soft);color:#9a6700;border-radius:var(--r-pill);padding:3px 10px;font-size:var(--fs-xs)}.batch-head .bh-meta{font-size:11px;color:var(--ink-3);font-weight:700}.batch-head .bh-id{margin-left:auto;font-size:10px;color:var(--ink-3);font-variant-numeric:tabular-nums}.batch .qr-cards{padding:var(--sp-3)}.qc-bn{display:inline-block;margin:6px auto 0;font-size:10px;font-weight:800;color:#9a6700;background:var(--accent-soft);border-radius:var(--r-pill);padding:1px 8px}.empty{text-align:center;color:var(--ink-3);padding:var(--sp-8) 0;font-size:var(--fs-sm)}.skeleton{background:linear-gradient(90deg,var(--surface-2) 25%,var(--line-2) 37%,var(--surface-2) 63%);background-size:400% 100%;animation:shimmer 1.4s ease infinite;border-radius:var(--r-sm)}@keyframes shimmer{0%{background-position:100% 0}to{background-position:-100% 0}}.skel-row{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-3) var(--sp-4);border-bottom:1px solid var(--line-2)}.toast-host{position:fixed;left:50%;bottom:84px;transform:translate(-50%);z-index:60;display:flex;flex-direction:column;gap:8px;width:calc(var(--frame-w) - 32px);max-width:calc(100vw - 32px);pointer-events:none}.toast{background:var(--ink);color:#fff;border-radius:var(--r-md);padding:10px var(--sp-4);box-shadow:var(--shadow-lg);font-size:var(--fs-sm);font-weight:700;text-align:center}.toast.success{background:var(--success)}.toast.danger{background:var(--danger)}.toast.warn{background:#5a3208}.dialog-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:70;background:#11141866;display:flex;align-items:center;justify-content:center;padding:var(--sp-4)}.dialog{background:var(--surface);border-radius:var(--r-lg);box-shadow:var(--shadow-lg);width:100%;max-width:360px;padding:var(--sp-5)}.dialog h3{font-size:var(--fs-lg);font-weight:800;margin-bottom:8px}.dialog p{color:var(--ink-2);font-size:var(--fs-sm);margin-bottom:var(--sp-5)}@media (min-width: 1024px){.qr-wrap.wide{display:grid;grid-template-columns:var(--shell-side-w) 1fr;grid-template-rows:var(--shell-top-h) 1fr;grid-template-areas:"side  top" "side  content";max-width:var(--frame-w-wide);margin:0 auto;border-radius:0;overflow:visible;box-shadow:0 0 0 1px var(--line);min-height:100vh}.qr-wrap.wide .qr-head{grid-area:top}.qr-wrap.wide .qr-body{grid-area:content}.qr-wrap.wide .qr-tabbar{grid-area:side}}@media (min-width: 1280px){.qr-wrap.wide{max-width:var(--frame-w-wide-xl)}}@media (min-width: 1024px){.qr-wrap.wide .qr-tabbar{position:sticky;top:0;align-self:start;height:100vh;flex-direction:column;justify-content:flex-start;gap:var(--sp-1);padding:var(--sp-5) var(--sp-3);background:var(--surface);border-top:none;border-right:1px solid var(--line);padding:0}.qr-wrap.wide .qr-tabbar a:not(.sn-brand),.qr-wrap.wide .qr-tabbar button{position:relative;flex:0 0 auto;width:auto;margin:0 var(--sp-3);flex-direction:row;justify-content:flex-start;gap:var(--sp-3);height:44px;padding:0 var(--sp-3);font-size:var(--fs-md);border-radius:var(--r-md)}.qr-wrap.wide .qr-tabbar a:hover,.qr-wrap.wide .qr-tabbar button:hover{background:var(--surface-2)}.qr-wrap.wide .qr-tabbar a.active{background:var(--primary-soft)}.qr-wrap.wide .qr-tabbar a .pip,.qr-wrap.wide .qr-tabbar button .pip{position:absolute;left:0;top:50%;transform:translateY(-50%);width:3px;height:18px;border-radius:var(--r-pill)}.qr-wrap.wide .qr-tabbar>button:last-child,.qr-wrap.wide .qr-tabbar>a:last-child{margin-top:auto}.qr-wrap.wide .qr-tabbar button.sn-logout{justify-content:center;gap:0;height:40px;margin-bottom:var(--sp-4);border:1px solid var(--line);border-radius:var(--r-pill);background:var(--surface);font-weight:700}.qr-wrap.wide .qr-tabbar button.sn-logout:hover{background:var(--surface-2);border-color:var(--primary);color:var(--primary-ink)}}@media (min-width: 1024px){.qr-wrap.wide .qr-tabbar .sn-group{display:flex;flex-direction:column;gap:var(--sp-1);width:100%;margin-top:var(--sp-4)}.qr-wrap.wide .qr-tabbar .sn-group:first-of-type{margin-top:var(--sp-4)}.qr-wrap.wide .qr-tabbar .sn-toggle{display:flex;align-items:center;width:100%;height:auto;margin:0 0 var(--sp-1);padding:var(--sp-1) var(--sp-3);background:none;border:none;border-radius:var(--r-md);cursor:pointer;text-align:left;transition:.15s}.qr-wrap.wide .qr-tabbar .sn-toggle:hover{background:var(--surface-2)}.qr-wrap.wide .qr-tabbar .sn-toggle .sn-grouptitle{font-size:var(--fs-sm);font-weight:800;letter-spacing:.04em;color:var(--ink-2)}.qr-wrap.wide .qr-tabbar .sn-caret{margin-left:auto;width:0;height:0;border-style:solid;border-width:4px 0 4px 5px;border-color:transparent transparent transparent var(--ink-3);transition:transform .15s;transform:rotate(0)}.qr-wrap.wide .qr-tabbar .sn-toggle[aria-expanded=true] .sn-caret{transform:rotate(90deg)}.qr-wrap.wide .qr-tabbar .sn-items{display:flex;flex-direction:column;gap:var(--sp-1);border-left:1px solid var(--line);padding-left:var(--sp-3);max-height:480px;overflow:hidden;transition:max-height .15s}.qr-wrap.wide .qr-tabbar .sn-items[data-open=false]{max-height:0}.qr-wrap.wide .qr-tabbar .sn-items a{padding-left:var(--sp-6)}}@media (prefers-reduced-motion: reduce){.qr-wrap.wide .qr-tabbar .sn-items,.qr-wrap.wide .qr-tabbar .sn-caret{transition:none}}.qr-tabbar .sn-toggle{display:none}.qr-tabbar .sn-group,.qr-tabbar .sn-items{display:contents}.qr-tabbar .sn-brand{display:none}@media (min-width: 1024px){.qr-wrap.wide .qr-tabbar .sn-brand{display:flex;align-items:center;justify-content:center;flex:0 0 auto;width:100%;box-sizing:border-box;height:var(--shell-top-h);padding-top:0;padding-bottom:0;padding-left:var(--sp-3);padding-right:var(--sp-3);border-radius:0;border-bottom:1px solid var(--line)}.qr-wrap.wide .qr-tabbar .sn-brand img{height:70%;width:auto;max-height:70%;max-width:100%;object-fit:contain}.qr-wrap.wide .qr-head .brand{display:none}}@media (min-width: 1024px){.qr-wrap.wide .qr-head{height:var(--shell-top-h);position:sticky;top:0;z-index:40;padding:0 var(--sp-6)}.qr-wrap.wide .qr-body{padding:var(--sp-6)}.qr-wrap.wide .qr-body.flush{padding:0}.qr-wrap.wide .qr-body>*{max-width:var(--shell-content-max)}}@media (min-width: 1024px){.qr-wrap.wide .qr-cards{grid-template-columns:repeat(3,1fr)}}@media (min-width: 1280px){.qr-wrap.wide .qr-cards{grid-template-columns:repeat(4,1fr)}}@media (min-width: 1024px){.qr-wrap.wide .u-row{padding:var(--sp-4) var(--sp-5)}}@media (min-width: 1024px){.qr-wrap.wide .u-list{display:grid;grid-template-columns:1fr 1fr;column-gap:var(--sp-4)}.qr-wrap.wide .u-list .u-row{border-bottom:1px solid var(--line-2)}}@media (min-width: 768px){.scan-stage.full{min-height:480px;max-height:min(72vh,640px)}}@media (min-width: 1280px){.qr-wrap:not(.wide){max-width:var(--frame-w-md)}}.result-sheet{max-width:var(--frame-w-md);margin-left:auto;margin-right:auto}@media (min-width: 1024px){.toast-host{width:min(var(--frame-w),calc(100vw - 32px))}}.stat-sub{margin-top:4px;font-size:var(--fs-xs);color:var(--ink-3);font-weight:700;font-variant-numeric:tabular-nums;line-height:1.4}.stat-sub b{color:var(--ink-2);font-weight:800}.stat-sub .sep{margin:0 6px;color:var(--line)}.v .unit,.stat-sub .unit{font-size:.8em;font-weight:700;color:var(--ink-3);margin-left:2px}.pager{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:var(--sp-3);padding:var(--sp-4) var(--sp-4)}.pager .page-nav{display:flex;align-items:center;gap:6px}.pager .page-btn{min-width:40px;height:40px;padding:0 10px;display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface);color:var(--ink-2);font-size:var(--fs-sm);font-weight:800;font-variant-numeric:tabular-nums;transition:.15s}.pager .page-btn:hover{background:var(--surface-2)}.pager .page-btn.active{background:var(--primary);color:#fff;border-color:var(--primary)}.pager .page-btn:disabled{opacity:.45;cursor:not-allowed}.pager .page-ellipsis{min-width:24px;text-align:center;color:var(--ink-3);font-weight:800;font-variant-numeric:tabular-nums;align-self:center}.pager .page-size{display:inline-flex;align-items:center;gap:var(--sp-2)}.pager .page-size .lab{font-size:var(--fs-xs);color:var(--ink-3);font-weight:700;white-space:nowrap}.pager .page-size .select{height:40px;width:auto;min-width:78px;padding:0 10px;font-size:var(--fs-sm);font-weight:700}.pager .page-size .seg button{min-height:34px}.pager .page-info{font-size:var(--fs-xs);color:var(--ink-3);font-weight:700;font-variant-numeric:tabular-nums}@media (min-width: 1024px){.qr-wrap.wide .pager{justify-content:space-between}}.qr-rows{display:flex;flex-direction:column;gap:var(--sp-3)}.qr-row{border:1px solid var(--line);border-radius:var(--r-lg);background:var(--surface);overflow:hidden;box-shadow:var(--shadow-sm)}.qr-row-head{display:flex;align-items:center;gap:var(--sp-3);width:100%;padding:var(--sp-3) var(--sp-4);background:var(--surface);text-align:left;cursor:pointer;transition:.15s}.qr-row-head:hover{background:var(--surface-2)}.qr-row-head .rh-tag{flex:0 0 auto;font-weight:800;font-size:var(--fs-xs);background:var(--accent-soft);color:#9a6700;border-radius:var(--r-pill);padding:3px 10px}.qr-row-head .rh-meta{min-width:0}.qr-row-head .rh-meta .rh-title{font-weight:800;font-size:var(--fs-sm);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.qr-row-head .rh-meta .rh-sub{font-size:11px;color:var(--ink-3);font-weight:700;font-variant-numeric:tabular-nums}.qr-row-head .rh-amt{flex:0 0 auto;color:var(--talent-ink);font-weight:800;font-size:var(--fs-sm);font-variant-numeric:tabular-nums}.qr-row-head .rh-right{margin-left:auto;flex:0 0 auto;display:flex;align-items:center;gap:var(--sp-2)}.qr-row-head .rh-id{font-size:10px;color:var(--ink-3);font-variant-numeric:tabular-nums}.qr-row-caret{width:0;height:0;flex:0 0 auto;border-style:solid;border-width:5px 4px 0 4px;border-color:var(--ink-3) transparent transparent transparent;transition:transform .15s}.qr-row-head[aria-expanded=true] .qr-row-caret{transform:rotate(180deg)}.qr-row-zip{height:32px;padding:0 12px;display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface);color:var(--primary-ink);font-size:var(--fs-xs);font-weight:800;transition:.15s}.qr-row-zip:hover{background:var(--primary-soft);border-color:var(--primary-soft)}.qr-row-zip:disabled{opacity:.5;cursor:not-allowed}.qr-detail{border-top:1px solid var(--line-2);background:var(--surface-2);padding:var(--sp-3)}.qr-detail[hidden]{display:none}.qr-detail .qd-hint{font-size:11px;color:var(--ink-3);font-weight:700;text-align:center;margin-bottom:var(--sp-2)}.qr-carousel{display:flex;gap:var(--sp-3);overflow-x:auto;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;padding-bottom:var(--sp-2);scrollbar-width:thin;scrollbar-color:var(--line) transparent}.qr-carousel::-webkit-scrollbar{height:6px}.qr-carousel::-webkit-scrollbar-thumb{background:var(--line);border-radius:var(--r-pill)}.qr-carousel::-webkit-scrollbar-track{background:transparent}.qr-slide{flex:0 0 calc((100% - var(--sp-3)) / 2);scroll-snap-align:start}.qr-slide>.qr-card{height:100%}@media (prefers-reduced-motion: reduce){.qr-carousel{scroll-behavior:auto}}.ts-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-3);margin-bottom:var(--sp-4)}.ts-field{display:inline-flex;align-items:center;gap:var(--sp-2)}.ts-field-l{font-size:var(--fs-xs);font-weight:800;color:var(--ink-2)}.ts-field .select{width:auto;min-width:96px;height:40px;padding:0 12px}.ts-grid{display:grid;grid-template-columns:1fr;gap:var(--sp-4)}@media (min-width: 1024px){.ts-grid{grid-template-columns:minmax(280px,340px) 1fr;gap:var(--sp-5);align-items:start}}.ts-summary .ts-sum-k{font-size:var(--fs-xs);font-weight:700;color:var(--ink-3)}.ts-summary .talent.big{display:block;margin-top:2px}.ts-sum-meta{margin-top:var(--sp-1);font-size:var(--fs-sm);color:var(--ink-3)}.ts-sum-meta b{color:var(--ink-2);font-weight:800}.ts-chart{margin-top:var(--sp-4);display:flex;flex-direction:column;gap:var(--sp-2)}.ts-bar-row{display:grid;grid-template-columns:56px 1fr 64px;align-items:center;gap:var(--sp-2);min-height:28px}.ts-bar-label{font-size:var(--fs-xs);font-weight:800;color:var(--ink-2);text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}.ts-bar-track{height:14px;background:var(--surface-2);border:1px solid var(--line-2);border-radius:var(--r-pill);overflow:hidden}.ts-bar-fill{display:block;height:100%;background:var(--talent);border-radius:var(--r-pill);min-width:3px;transition:width .3s ease}.ts-bar-val{font-size:var(--fs-xs);font-weight:800;text-align:right;font-variant-numeric:tabular-nums}.ts-list{display:flex;flex-direction:column;gap:var(--sp-3)}.ts-grp-sum{margin-left:auto;font-size:var(--fs-xs);color:var(--ink-2);font-weight:700;white-space:nowrap}.ts-grp-sum b{color:var(--ink);font-weight:800}.ts-grp-sum .talent{font-size:var(--fs-sm)}
