@font-face{font-family:Manrope;src:url('/fonts/manrope.woff2') format('woff2');font-weight:200 800;font-display:swap}
@font-face{font-family:'DM Mono';src:url('/fonts/dm-mono-400.woff2') format('woff2');font-weight:400;font-display:swap}
@font-face{font-family:'DM Mono';src:url('/fonts/dm-mono-500.woff2') format('woff2');font-weight:500;font-display:swap}

:root{font-family:Manrope,'Microsoft YaHei','PingFang SC',sans-serif;color:#203744;background:#f2f9fd;font-synthesis:none;letter-spacing:0;--ink:#203744;--muted:#6e8795;--line:#dbe8ef;--paper:#f2f9fd;--green:#286d98;--coral:#ed765e;--danger:#c64242}
*{box-sizing:border-box}[hidden]{display:none!important}html{min-height:100%;-webkit-text-size-adjust:100%}body{margin:0;min-width:320px}button,input,textarea,select{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.55}button:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible,a:focus-visible{outline:3px solid #e59a6e;outline-offset:3px}svg{width:20px;height:20px;stroke-width:1.8}button svg{flex:none}a{color:inherit;text-decoration:none}

/* Teacher flow */
.claim-page{min-height:100vh;overflow-x:hidden;position:relative;background:linear-gradient(135deg,#f7f8f6 0%,#f3f7f3 58%,#f8f4f0 100%)}
.ambient{position:fixed;inset:0;pointer-events:none;background:linear-gradient(120deg,transparent 0%,rgba(185,216,200,.19) 40%,transparent 65%,rgba(236,175,142,.12) 100%);background-size:200% 200%;animation:ambient-shift 12s ease-in-out infinite alternate}
@keyframes ambient-shift{to{background-position:100% 80%}}
.claim-shell{width:min(100% - 48px,560px);min-height:100svh;margin:0 auto;display:flex;flex-direction:column;position:relative}
.claim-header{height:103px;display:flex;align-items:center;gap:13px;font-size:10px;font-weight:800;letter-spacing:1.1px;color:#44544d}.brand-mark{height:34px;width:34px;border-radius:8px;display:grid;place-items:center;background:var(--green);color:white}.brand-mark svg{height:18px;width:18px;stroke-width:2.2}.brand-divider{color:#b5c1b9;margin:0 5px}
.claim-view{display:none;animation:view-in .55s cubic-bezier(.2,.7,.2,1) both;position:relative}.claim-view.is-active{display:block}@keyframes view-in{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:translateY(0)}}
.edition{display:flex;align-items:center;gap:10px;color:var(--green);font-size:11px;font-weight:800;letter-spacing:1.5px;margin:48px 0 28px}.edition-line{width:27px;height:1px;background:var(--green)}.edition-number{margin-left:auto;color:#99aaa0;font-family:'DM Mono',monospace;font-size:11px}
.claim-view h1{font-size:clamp(44px,8vw,68px);line-height:1.22;font-weight:700;margin:0;letter-spacing:0}.claim-view h1 span{color:var(--green)}.hero-copy{font-size:15px;line-height:1.95;color:#66756e;margin:24px 0 0}
.claim-form{margin-top:53px}.claim-form label,.field-label{display:block;color:#3b4a43;font-size:13px;font-weight:700;margin-bottom:12px}.required{color:var(--coral)}.input-wrap{height:62px;border:1px solid #d8e1da;border-radius:8px;background:rgba(255,255,255,.88);display:flex;align-items:center;padding:0 19px;gap:15px;transition:border-color .2s,box-shadow .2s}.input-wrap:focus-within{border-color:var(--green);box-shadow:0 0 0 4px rgba(40,91,84,.1)}.input-wrap svg{width:18px;color:#84968b}.input-wrap input{border:0;outline:0;width:100%;height:100%;background:transparent;color:var(--ink);font-size:16px;min-width:0}.input-wrap input::placeholder{color:#a6b3aa}.input-wrap:has(input[aria-invalid=true]){border-color:var(--danger)}.field-error{height:22px;margin:6px 0 0;color:var(--danger);font-size:12px}
.primary-button{height:60px;width:100%;border:0;border-radius:8px;background:var(--green);color:#fff;display:flex;align-items:center;justify-content:center;gap:12px;font-size:15px;font-weight:700;transition:transform .17s,background .2s,box-shadow .2s;box-shadow:0 10px 22px rgba(40,91,84,.15)}.primary-button:hover:not(:disabled){background:#1e4c45;box-shadow:0 14px 28px rgba(40,91,84,.22)}.primary-button:active:not(:disabled){transform:scale(.985)}.primary-button svg{width:18px}.claim-note{display:flex;align-items:center;justify-content:center;gap:8px;margin:22px 0 0;color:#91a198;font-size:11px}.claim-note svg{width:15px;height:15px}
.claim-footer{margin-top:auto;padding:56px 0 29px;display:flex;justify-content:space-between;font-size:10px;color:#a8b5ac;letter-spacing:.4px}
.result-emblem{width:51px;height:51px;border-radius:50%;background:#e1eee6;color:var(--green);display:grid;place-items:center;margin-top:36px;animation:pop .6s cubic-bezier(.18,.9,.25,1.2) both}.result-emblem svg{width:26px;height:26px;stroke-width:2.4}@keyframes pop{from{transform:scale(.3);opacity:0}to{transform:scale(1);opacity:1}}#result-view .edition{margin-top:28px;margin-bottom:20px}#result-view h1{font-size:clamp(39px,7vw,58px)}#result-view .hero-copy{margin-top:15px}.voucher{margin:39px 0 22px;padding:25px 25px 23px;background:#fff;border:1px solid #e6ebe6;border-radius:8px;box-shadow:0 22px 70px rgba(48,77,62,.08);position:relative;overflow:hidden}.voucher:before,.voucher:after{content:'';position:absolute;top:68%;width:20px;height:20px;background:#f4f7f4;border:1px solid #e6ebe6;border-radius:50%}.voucher:before{left:-11px}.voucher:after{right:-11px}.voucher-top{display:flex;justify-content:space-between;align-items:center;color:#8a9d91;font:500 10px 'DM Mono',monospace;letter-spacing:1px}.voucher-top svg{color:var(--coral);width:17px;height:17px}.voucher-code{display:block;font:500 clamp(23px,6vw,34px)/1.35 'DM Mono',monospace;color:var(--ink);letter-spacing:1px;overflow-wrap:anywhere;margin:28px 0 27px}.voucher-rule{border-top:1px dashed #d8e1da;margin:0 -25px}.voucher-meta{display:flex;justify-content:space-between;gap:10px;padding-top:21px;color:#8c9b91;font-size:11px}.voucher-meta span{display:flex;flex-direction:column;gap:6px}.voucher-meta b{color:#46564c;font-size:12px;font-weight:600}.voucher-meta span:last-child{text-align:right}.result-footnote{text-align:center;font-size:11px;color:#96a69c;line-height:1.8;margin:18px 0}.primary-button.is-copied{background:#397f69}.confetti{position:absolute;inset:0;overflow:hidden;pointer-events:none;z-index:2}.confetti span{position:absolute;left:var(--x);top:-18px;width:7px;height:13px;border-radius:2px;opacity:0;animation:fall var(--duration) var(--delay) ease-in forwards}@keyframes fall{10%{opacity:1}90%{opacity:1}100%{transform:translate(var(--drift),560px) rotate(720deg);opacity:0}}
.empty-view{padding-top:110px}.empty-icon{height:64px;width:64px;border-radius:15px;background:#e9efeb;color:var(--green);display:grid;place-items:center}.empty-icon svg{width:30px;height:30px}.empty-view .edition{margin:37px 0 23px}.secondary-button{height:54px;margin-top:38px;padding:0 22px;background:transparent;border:1px solid #c8d5cc;border-radius:8px;color:var(--green);display:flex;align-items:center;gap:10px;font-weight:700}.secondary-button:hover{background:#eaf1eb}.secondary-button:active{transform:scale(.98)}

/* Admin */
.admin-page{background:#f5f7f5;color:var(--ink);min-height:100vh}.admin-layout{min-height:100vh;display:grid;grid-template-columns:240px minmax(0,1fr)}.sidebar{background:#1f332e;color:#f0f5ef;display:flex;flex-direction:column;padding:28px 17px}.admin-brand{display:flex;align-items:center;gap:12px;padding:2px 12px 40px;font-size:14px;font-weight:800}.admin-brand .brand-mark{background:#e9f2eb;color:var(--green)}.sidebar-caption{font-size:10px;color:#8fa99c;font-weight:700;letter-spacing:1.5px;padding:0 14px 12px}.side-nav{display:grid;gap:4px}.nav-button{border:0;background:transparent;color:#a9c0b2;width:100%;height:43px;border-radius:6px;display:flex;align-items:center;gap:12px;padding:0 14px;text-align:left;font-size:13px;font-weight:600}.nav-button svg{width:17px;height:17px}.nav-button:hover{background:rgba(255,255,255,.08);color:#fff}.nav-button.active{background:#35564a;color:#fff}.sidebar-bottom{margin-top:auto;padding:17px 8px 0;border-top:1px solid #3b5449}.admin-identity{display:flex;align-items:center;gap:11px;padding:0 5px 16px;font-size:12px;font-weight:700}.identity-avatar{width:33px;height:33px;border-radius:7px;background:#537d68;display:grid;place-items:center;color:#fff}.logout-button{border:0;background:transparent;color:#a9c0b2;display:flex;align-items:center;gap:10px;font-size:12px;padding:8px 6px}.logout-button:hover{color:white}.logout-button svg{width:16px}
.admin-main{min-width:0;padding:35px clamp(20px,4vw,58px) 70px}.admin-topline{display:flex;justify-content:space-between;align-items:center;color:#87998d;font-size:11px;font-weight:700;letter-spacing:.7px;margin-bottom:30px}.admin-topline span:last-child{display:flex;align-items:center;gap:7px}.admin-topline svg{height:14px;width:14px}.admin-section{display:none;animation:view-in .35s both}.admin-section.active{display:block}.section-head{display:flex;justify-content:space-between;align-items:end;gap:20px;margin-bottom:28px}.section-head h1{font-size:29px;line-height:1.3;margin:0 0 5px;font-weight:700}.section-head p{margin:0;color:#8a9a90;font-size:12px}.section-head .head-actions{display:flex;gap:9px}.section-subhead{display:flex;justify-content:space-between;align-items:center;margin:39px 0 16px}.section-subhead h2{font-size:16px;margin:0}.section-subhead span{color:#8a9a90;font-size:12px}
.stat-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}.stat-card{min-height:125px;padding:20px 19px;background:#fff;border:1px solid #e6ebe6;border-radius:7px;display:flex;flex-direction:column;justify-content:space-between}.stat-card-top{display:flex;align-items:center;justify-content:space-between;color:#819287;font-size:12px}.stat-card svg{width:18px;height:18px;color:#789989}.stat-card strong{font-size:32px;line-height:1;font-weight:700;font-variant-numeric:tabular-nums}.stat-card.accent strong{color:var(--green)}.stat-card.today svg{color:var(--coral)}
.panel{background:#fff;border:1px solid #e2e9e3;border-radius:7px;overflow:hidden}.toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:15px 18px;border-bottom:1px solid #edf0ec}.toolbar-group{display:flex;align-items:center;gap:9px;flex-wrap:wrap}.toolbar-title{font-size:13px;font-weight:700}.toolbar-count{color:#9aaa9e;font-size:12px}.select-control,.text-control,.date-control,.textarea-control{background:#fff;border:1px solid #dce5dd;border-radius:6px;color:#35483c;outline:0}.select-control,.date-control,.text-control{height:36px;padding:0 11px;font-size:12px}.select-control{min-width:105px}.text-control{width:180px}.date-control{width:145px}.textarea-control{width:100%;min-height:160px;resize:vertical;padding:13px;font:12px/1.7 'DM Mono','Noto Sans SC',monospace}.select-control:focus,.date-control:focus,.text-control:focus,.textarea-control:focus{border-color:var(--green);box-shadow:0 0 0 3px rgba(40,91,84,.1)}.small-button{height:36px;border:1px solid #dce5dd;background:#fff;color:#405349;border-radius:6px;padding:0 13px;display:inline-flex;align-items:center;justify-content:center;gap:7px;white-space:nowrap;font-size:12px;font-weight:700;transition:background .15s,transform .15s}.small-button:hover{background:#f4f8f4}.small-button:active{transform:scale(.97)}.small-button svg{width:15px;height:15px}.small-button.primary{background:var(--green);color:white;border-color:var(--green)}.small-button.primary:hover{background:#1e4c45}.small-button.danger{color:var(--danger);border-color:#f0caca}.small-button.danger:hover{background:#fff2f2}.small-button:disabled{opacity:.45}.icon-button{width:32px;height:32px;border:0;background:transparent;color:#88998e;display:grid;place-items:center;border-radius:5px}.icon-button:hover{background:#fff1f1;color:var(--danger)}.icon-button svg{width:16px;height:16px}
.table-scroll{overflow-x:auto}.data-table{width:100%;border-collapse:collapse;text-align:left;min-width:620px}.data-table th{height:42px;background:#f9fbf9;color:#8b9a90;font-size:11px;font-weight:700;white-space:nowrap}.data-table td{height:52px;border-top:1px solid #eef1ee;font-size:12px;color:#526158}.data-table th:first-child,.data-table td:first-child{padding-left:19px}.data-table th:last-child,.data-table td:last-child{padding-right:15px;text-align:right}.data-table tr:hover td{background:#fcfdfb}.data-table .code-cell{font:500 12px 'DM Mono',monospace;color:#263b32;overflow-wrap:anywhere}.data-table .time-cell{color:#91a094;font-variant-numeric:tabular-nums;white-space:nowrap}.status-pill{display:inline-flex;align-items:center;gap:6px;padding:5px 8px;border-radius:4px;font-size:11px;font-weight:700;color:#326c52;background:#eaf4ed}.status-pill:before{content:'';width:6px;height:6px;background:#4fa66d;border-radius:50%}.status-pill.claimed{color:#74847a;background:#eef2ee}.status-pill.claimed:before{background:#9bab9f}.check-control{width:15px;height:15px;accent-color:var(--green);cursor:pointer}.empty-table{text-align:center;padding:50px 15px;color:#9aaba0;font-size:12px}.pagination{display:flex;justify-content:space-between;align-items:center;padding:13px 18px;border-top:1px solid #edf0ec;color:#94a298;font-size:11px}.pagination div{display:flex;gap:6px}.pagination button{min-width:30px;height:28px;border:1px solid #dce5dd;border-radius:5px;background:#fff;color:#607467;font-size:11px}.pagination button:hover:not(:disabled){background:#edf4ed}.pagination button:disabled{opacity:.35}
.import-panel{display:none;margin:0 0 20px;padding:22px;background:#fff;border:1px solid #e2e9e3;border-radius:7px}.import-panel.open{display:block}.import-panel h2{font-size:15px;margin:0 0 5px}.import-panel p{font-size:11px;color:#91a094;margin:0 0 18px}.import-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px}.import-label{font-size:12px;font-weight:700;display:block;margin-bottom:9px}.file-drop{height:160px;border:1px dashed #b8cbbd;border-radius:6px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:9px;color:#6e8273;background:#fafcfa;cursor:pointer;font-size:12px;text-align:center;padding:12px}.file-drop:hover{border-color:var(--green);background:#f2f7f2}.file-drop svg{width:23px;height:23px;color:var(--green)}.file-drop input{position:absolute;opacity:0;width:1px;height:1px}.import-actions{display:flex;align-items:center;gap:15px;margin-top:17px}.import-result{color:var(--green);font-size:12px;font-weight:700}
.filters{display:flex;align-items:end;flex-wrap:wrap;gap:10px;padding:16px 18px;border-bottom:1px solid #edf0ec}.filters label{display:grid;gap:6px;font-size:11px;color:#8d9d91}.filters .small-button{margin-bottom:0}.settings-form{max-width:460px;background:#fff;border:1px solid #e2e9e3;border-radius:7px;padding:26px}.settings-form label{display:block;font-size:12px;font-weight:700;color:#495d4e;margin-bottom:7px}.settings-form .text-control{display:block;width:100%;height:42px;margin-bottom:20px;font-size:14px}.settings-form .small-button{height:42px}.settings-form p{font-size:11px;color:#91a094;line-height:1.6}
.login-screen{min-height:100svh;display:grid;place-items:center;padding:25px;background:linear-gradient(135deg,#edf3ec,#f7f8f6 62%,#f3eeeb)}.login-card{width:min(100%,410px);padding:35px;background:white;border:1px solid #e4ebe5;border-radius:8px;box-shadow:0 25px 80px rgba(25,51,39,.08)}.login-card .brand-mark{margin-bottom:28px}.login-card h1{font-size:26px;margin:0 0 7px}.login-card p{font-size:12px;color:#8d9d91;margin:0 0 28px}.login-card label{display:block;font-size:12px;font-weight:700;margin:0 0 8px}.login-card .text-control{width:100%;height:45px;margin-bottom:19px;font-size:14px}.login-card .primary-button{height:48px;margin-top:9px}.login-error{color:var(--danger);font-size:12px;min-height:19px;margin-bottom:2px}.login-footer{text-align:center;font-size:11px;color:#a6b5a9;margin-top:25px}
.toast{position:fixed;right:24px;bottom:25px;z-index:50;max-width:min(360px,calc(100vw - 40px));padding:12px 16px;color:#fff;background:#254d3f;border-radius:6px;box-shadow:0 12px 35px rgba(16,40,28,.2);font-size:12px;animation:view-in .3s both}.toast.error{background:#b83e3e}.confirm-dialog{border:0;border-radius:8px;padding:0;width:min(400px,calc(100% - 30px));box-shadow:0 28px 100px rgba(24,42,31,.22)}.confirm-dialog::backdrop{background:rgba(20,34,27,.48)}.dialog-body{padding:26px}.dialog-body h2{font-size:18px;margin:0 0 11px}.dialog-body p{font-size:13px;line-height:1.7;color:#6c7c70;margin:0 0 24px}.dialog-actions{display:flex;justify-content:flex-end;gap:8px}
@media(max-width:950px){.admin-layout{grid-template-columns:64px minmax(0,1fr)}.sidebar{padding:22px 9px}.admin-brand{padding:0 5px 33px}.admin-brand span,.sidebar-caption,.nav-button span,.admin-identity span,.logout-button span{display:none}.nav-button{justify-content:center;padding:0}.sidebar-bottom{padding:14px 0}.admin-identity{justify-content:center;padding:0 0 15px}.logout-button{margin:auto}.stat-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:650px){.claim-shell{width:min(100% - 44px,460px)}.claim-header{height:78px}.edition{margin-top:48px}.claim-view h1{font-size:clamp(43px,11vw,58px)}.hero-copy{font-size:14px}.claim-form{margin-top:43px}.claim-footer{padding-top:38px}.admin-layout{display:block;padding-bottom:61px}.sidebar{position:fixed;z-index:20;bottom:0;left:0;right:0;height:58px;flex-direction:row;align-items:center;padding:5px 12px;box-shadow:0 -5px 25px rgba(22,44,30,.12)}.admin-brand,.sidebar-caption,.sidebar-bottom{display:none}.side-nav{display:flex;width:100%;justify-content:space-around}.nav-button{height:47px;width:58px}.admin-main{padding:25px 16px 45px}.admin-topline{margin-bottom:25px}.section-head{align-items:start}.section-head h1{font-size:25px}.stat-grid{gap:9px}.stat-card{min-height:108px;padding:16px}.stat-card strong{font-size:27px}.import-grid{grid-template-columns:1fr}.toolbar{align-items:start;flex-wrap:wrap}.filters .text-control{width:145px}.date-control{width:135px}.voucher-meta{font-size:10px}.voucher-meta b{font-size:11px}}
@media(max-width:370px){.claim-shell{width:calc(100% - 36px)}.claim-view h1{font-size:42px}.voucher{padding-left:18px;padding-right:18px}.voucher-rule{margin:0 -18px}.voucher-code{font-size:22px}.stat-card strong{font-size:24px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}

/* Codemao course campaign */
.claim-page{background:linear-gradient(135deg,#f8fcff 0%,#eef8fd 57%,#f5faff 100%)}
.ambient{background:linear-gradient(120deg,transparent 0%,rgba(148,207,239,.22) 43%,transparent 70%,rgba(255,201,174,.12) 100%);background-size:200% 200%}
.claim-header{color:#45647a}.brand-divider{color:#aec5d2}.edition,.edition-line{color:var(--green)}.edition-line{background:var(--green)}.edition-number{color:#91adbb}
.welcome-head{display:grid;grid-template-columns:minmax(0,1fr) 150px;align-items:center;gap:8px;min-height:168px}.welcome-head h1{font-size:clamp(40px,7vw,58px);line-height:1.25}.welcome-head h1 span{display:block}.welcome-mascot{display:block;width:100%;max-height:171px;object-fit:contain;object-position:center bottom;align-self:end;filter:drop-shadow(0 12px 15px rgba(46,95,122,.13));animation:mascot-arrive .75s .15s both cubic-bezier(.2,.8,.2,1)}@keyframes mascot-arrive{from{opacity:0;transform:translateY(18px) rotate(-5deg)}to{opacity:1;transform:translateY(0) rotate(0)}}
.hero-copy{color:#627f8e}.claim-form{margin-top:39px}.claim-form label{color:#39586b}.input-wrap{border-color:#cfdfe9;background:rgba(255,255,255,.92)}.input-wrap:focus-within{box-shadow:0 0 0 4px rgba(40,109,152,.1)}.input-wrap svg,.input-wrap input::placeholder{color:#8ca8b8}.primary-button{box-shadow:0 10px 22px rgba(40,109,152,.16)}.primary-button:hover:not(:disabled){background:#195c84;box-shadow:0 14px 28px rgba(40,109,152,.22)}.claim-note,.result-footnote{color:#89a5b3}.claim-footer{color:#9bb2be}
.result-emblem{background:#deeff9}.voucher{border-color:#dce9f0;box-shadow:0 22px 70px rgba(45,99,128,.09)}.voucher:before,.voucher:after{background:#eef8fd;border-color:#dce9f0}.voucher-rule{border-color:#d9e6ed}.voucher-top,.voucher-meta{color:#829eac}.voucher-meta b{color:#456373}.empty-icon{background:#e2f0f7}.secondary-button{border-color:#bbd4e2}.secondary-button:hover{background:#e2f1f8}
.confetti{height:140px}.confetti span{top:calc(var(--start) - 18px)}@keyframes fall{10%{opacity:1}90%{opacity:1}100%{transform:translate(var(--drift),95px) rotate(720deg);opacity:0}}
.guide-open-button{width:100%;min-height:49px;margin-top:12px;padding:0 16px;border:1px solid #c7deeb;border-radius:8px;background:rgba(255,255,255,.78);color:var(--green);display:flex;align-items:center;justify-content:center;gap:10px;font-size:13px;font-weight:700;transition:background .2s,transform .15s}.guide-open-button:hover{background:#fff}.guide-open-button:active{transform:scale(.985)}.guide-open-button svg{width:17px;height:17px}.guide-open-button svg:last-child{margin-left:auto}
.guide-dialog{width:min(700px,calc(100vw - 28px));max-height:min(92dvh,920px);padding:0;border:1px solid #d7e6ee;border-radius:8px;background:#f8fcfe;color:var(--ink);box-shadow:0 30px 100px rgba(19,49,67,.25);overflow:hidden}.guide-dialog[open]{display:flex;flex-direction:column}.guide-dialog::backdrop{background:rgba(17,40,56,.62)}.guide-dialog-head{flex:none;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:23px 27px 18px;background:#fff;border-bottom:1px solid #e0ebf1}.guide-kicker{color:#82a2b4;font:500 10px 'DM Mono',monospace}.guide-dialog-head h2{font-size:21px;line-height:1.3;margin:6px 0 0;color:#23455b}.guide-close{width:35px;height:35px;flex:none;border:0;border-radius:6px;background:#eff6fa;color:#52788c;display:grid;place-items:center}.guide-close:hover{background:#dceef7}.guide-close svg{width:18px;height:18px}
.guide-dialog-body{min-height:0;overflow-y:auto;overscroll-behavior:contain;padding:20px 27px 10px}.guide-code-bar{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:14px 17px;border:1px solid #d4e7f1;border-radius:7px;background:#edf7fc}.guide-code-bar>div{min-width:0}.guide-code-bar span{display:block;font-size:11px;color:#7694a5}.guide-code-bar strong{display:block;margin-top:5px;font:500 17px/1.35 'DM Mono',monospace;overflow-wrap:anywhere;color:#1e4e6a}.guide-code-bar button{height:37px;flex:none;border:1px solid #b9d8e9;border-radius:6px;padding:0 11px;background:#fff;color:var(--green);display:flex;align-items:center;gap:7px;font-size:12px;font-weight:700}.guide-code-bar button:hover{background:#f7fcff}.guide-code-bar button svg{width:15px;height:15px}.guide-code-bar button.is-copied{color:#2c795f}
.demo-notice{font-size:12px;line-height:1.65;color:#a65a36;background:#fff4eb;border:1px solid #f4dfd0;border-radius:6px;padding:9px 12px;margin:14px 0}.guide-dialog-body .demo-notice{margin:11px 0 0}
.guide-tabs{display:grid;grid-template-columns:1fr 1fr;margin-top:23px;border-bottom:1px solid #d7e6ee}.guide-tab{height:45px;padding:0 10px;border:0;border-bottom:2px solid transparent;background:transparent;color:#819cab;font-size:13px;font-weight:700}.guide-tab.active{color:var(--green);border-color:var(--green)}.guide-tab:hover{color:var(--green)}.guide-step{padding:24px 0 26px;border-bottom:1px solid #e0eaf0}.guide-step-title{display:flex;align-items:start;gap:14px}.guide-step-title>span{flex:none;font:500 12px 'DM Mono',monospace;color:#3c88b2;padding-top:3px}.guide-step h3{font-size:15px;line-height:1.45;margin:0 0 6px;color:#274d64}.guide-step p{font-size:13px;line-height:1.8;color:#688494;margin:0}.guide-step img{display:block;max-width:100%;height:auto;margin:18px auto 0;border:1px solid #e3ebef;border-radius:6px;background:#fff}.guide-step .guide-image-narrow{max-width:min(100%,370px)}.guide-step .guide-app-icon{max-width:130px;margin-left:26px}.guide-source{font-size:11px;color:#9ab1bd;margin:19px 0 12px}.guide-dialog-foot{flex:none;padding:14px 27px;background:#fff;border-top:1px solid #e0ebf1;display:flex;justify-content:flex-end}.guide-dialog-foot .primary-button{width:175px;height:47px;font-size:13px;box-shadow:none}
.admin-page{background:#f3f8fb}.sidebar{background:#193d53}.nav-button{color:#abc5d2}.nav-button:hover{background:rgba(255,255,255,.09)}.nav-button.active{background:#315f79}.sidebar-caption{color:#92b4c5}.sidebar-bottom{border-color:#3c6073}.admin-identity .identity-avatar{background:#4d8cac}.logout-button{color:#abc5d2}.admin-topline,.section-head p,.section-subhead span{color:#869eaa}.stat-card,.panel,.settings-form{border-color:#dce8ef}.stat-card-top,.stat-card svg{color:#7e9baa}.data-table th{background:#f7fbfd;color:#829ba8}.data-table td{border-color:#e8f0f4}.data-table tr:hover td{background:#f9fcfe}.status-pill{color:#266f9d;background:#e4f3fb}.status-pill:before{background:#4d9fca}.status-pill.claimed{color:#768d99;background:#ecf3f7}.status-pill.claimed:before{background:#9db4c0}.pagination,.toolbar,.filters{border-color:#e3edf2}.small-button,.select-control,.text-control,.date-control,.textarea-control{border-color:#d3e2ea}.small-button:hover{background:#edf6fa}.small-button.primary:hover{background:#195c84}.select-control:focus,.date-control:focus,.text-control:focus,.textarea-control:focus{box-shadow:0 0 0 3px rgba(40,109,152,.1)}.file-drop{border-color:#b8d0dc;background:#f8fcfe;color:#6d8b9b}.file-drop:hover{background:#edf7fb}.login-screen{background:linear-gradient(135deg,#e8f5fb,#f7fbfd 65%,#f3f8fb)}.login-card{border-color:#dceaf1}.toast{background:#245b7b}
@media(max-width:650px){.welcome-head{grid-template-columns:minmax(0,1fr) 112px;min-height:147px}.welcome-head h1{font-size:clamp(38px,10.5vw,48px)}.welcome-mascot{max-height:148px}.guide-dialog{width:100vw;max-width:100vw;height:100dvh;max-height:100dvh;margin:0;border:0;border-radius:0}.guide-dialog-head{padding:calc(17px + env(safe-area-inset-top)) 20px 15px}.guide-dialog-head h2{font-size:19px}.guide-dialog-body{padding:17px 20px 10px}.guide-dialog-foot{padding:12px 20px calc(12px + env(safe-area-inset-bottom))}.guide-dialog-foot .primary-button{width:100%}.guide-step .guide-app-icon{margin-left:26px}}
@media(max-width:370px){.welcome-head{grid-template-columns:minmax(0,1fr) 96px}.welcome-head h1{font-size:38px}.welcome-mascot{max-height:136px}}

.claimed-codes,.guide-code-list{display:grid;gap:0;margin:14px 0 20px}.claim-code-item{padding:16px 0;border-bottom:1px solid #e4edf2;min-width:0}.claim-code-item:last-child{border-bottom:0}.claim-code-course{display:block;color:#648297;font-size:12px;font-weight:700;line-height:1.5}.claim-code-line{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:7px;min-width:0}.claim-code-line strong{font:500 clamp(17px,4.7vw,24px)/1.4 'DM Mono',monospace;color:#20475e;overflow-wrap:anywhere;min-width:0}.claim-code-copy{flex:none;min-width:75px;min-height:39px;padding:0 9px;display:flex;align-items:center;justify-content:center;gap:5px;border:1px solid #bed9e8;border-radius:6px;background:#f2f9fd;color:#286d98;font-size:11px;font-weight:700;transition:transform .15s,background .15s}.claim-code-copy:active{transform:scale(.96)}.claim-code-copy:hover{background:#e5f3fa}.claim-code-copy svg{width:15px;height:15px}.claim-code-copy.is-copied{color:#27745e;border-color:#b8ddcf;background:#edf8f2}.guide-code-heading{display:flex;justify-content:space-between;gap:12px;align-items:baseline;margin-top:3px;color:#274d64;font-size:13px;font-weight:700}.guide-code-heading span{font-size:11px;color:#819cab;font-weight:500}.guide-code-list{margin:8px 0 4px;padding:1px 15px;background:#edf7fc;border:1px solid #d4e7f1;border-radius:7px}.guide-code-list .claim-code-item{padding:12px 0}.guide-code-list .claim-code-line strong{font-size:17px}.codes-table{min-width:970px}.records-table{min-width:900px}.course-edit{max-width:200px;min-width:155px;font-size:11px}.codes-table .code-cell,.records-table .code-cell{max-width:230px}.import-course{min-width:235px;max-width:100%;margin:4px 0 18px}.admin-page .data-table td{padding-right:12px}.admin-page .data-table th{padding-right:12px}
@media(max-width:650px){.claim-code-line strong{font-size:18px}.guide-code-list .claim-code-line strong{font-size:16px}.guide-code-heading{flex-wrap:wrap}.guide-code-list{padding:1px 11px}}
.codes-table{min-width:900px}
