:root{--paper: #f2f4f8;--paper-2: #e9ecf3;--card: #ffffff;--card-2: #f8fafc;--line: #dde1ea;--line-soft: #eaedf4;--ink: #141726;--ink-2: #474d63;--ink-3: #767d95;--brand: #52308f;--brand-2: #6d43b8;--brand-ink: #3f2470;--brand-soft: #f3eefc;--brand-line: #d6c7ef;--wait: #a8590a;--wait-2: #c4741c;--wait-soft: #fdf2e0;--wait-line: #eccfa4;--ready: #076b4d;--ready-2: #0a8a63;--ready-soft: #dbf1e8;--ready-line: #9bd6c0;--done: #4c5468;--done-soft: #e8eaf1;--done-line: #c8cddc;--danger: #a02f2f;--danger-soft: #fbe4e4;--danger-line: #ecb6b6;--radius: 12px;--radius-lg: 16px;--shadow-sm: 0 1px 2px rgba(18, 21, 40, .06);--shadow: 0 1px 2px rgba(18, 21, 40, .05), 0 10px 26px -16px rgba(18, 21, 40, .32);--shadow-lg: 0 2px 4px rgba(18, 21, 40, .05), 0 18px 44px -22px rgba(18, 21, 40, .42);--font: "Plus Jakarta Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--mono: ui-monospace, "Cascadia Mono", "SF Mono", Menlo, Consolas, monospace}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--paper);background-image:radial-gradient(880px 520px at 8% -10%,#ede6fb 0%,transparent 60%),radial-gradient(720px 460px at 96% 2%,#e6f2ed 0%,transparent 58%),radial-gradient(620px 420px at 50% 108%,#fbf1e2 0%,transparent 62%);background-attachment:fixed;color:var(--ink);font-family:var(--font);font-size:15px;line-height:1.5;-webkit-font-smoothing:antialiased}h1,h2,h3,h4{margin:0;letter-spacing:-.025em;line-height:1.18}h1{font-size:28px;font-weight:800}h2{font-size:20px;font-weight:750}h3{font-size:16px;font-weight:700}p{margin:0 0 12px}a{color:var(--brand);text-underline-offset:2px}.shell{max-width:1140px;margin:0 auto;padding:0 18px 72px}.shell-narrow{max-width:470px;margin:0 auto;padding:0 18px 72px}.row{display:flex;gap:10px;align-items:center}.row-between{display:flex;gap:10px;align-items:center;justify-content:space-between}.row-wrap{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.grow{flex:1;min-width:0}.spacer{flex:1}.stack{display:flex;flex-direction:column;gap:14px}.muted{color:var(--ink-3)}.small{font-size:13px}.tiny{font-size:12px}.mono{font-family:var(--mono);font-variant-numeric:tabular-nums}.center{text-align:center}.hide-sm{display:initial}@media (max-width: 640px){.hide-sm{display:none}}.logo{display:inline-flex;align-items:baseline;gap:7px;text-decoration:none}.logo-ta{font-size:21px;font-weight:800;letter-spacing:-.01em;color:var(--brand);line-height:1}.logo-en{font-size:16px;font-weight:700;letter-spacing:.01em;color:var(--ink);line-height:1}.topbar{background:#ffffffdb;-webkit-backdrop-filter:saturate(1.6) blur(10px);backdrop-filter:saturate(1.6) blur(10px);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:20;margin-bottom:24px}.topbar-inner{max-width:1140px;margin:0 auto;padding:11px 18px;display:flex;align-items:center;gap:14px}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:18px;box-shadow:var(--shadow-sm)}.card-tight{padding:13px 15px}.card-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:14px;flex-wrap:wrap}label{display:block;font-size:13px;font-weight:650;color:var(--ink-2);margin-bottom:5px}input,select,textarea{width:100%;padding:11px 13px;border:1px solid var(--line);border-radius:9px;background:var(--card);color:var(--ink);font-family:inherit;font-size:15px;transition:border-color .14s,box-shadow .14s}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3.5px var(--brand-soft)}input:disabled{background:var(--card-2);color:var(--ink-3)}textarea{resize:vertical;min-height:70px}.field{margin-bottom:14px}.field-hint{font-size:12px;color:var(--ink-3);margin-top:5px}.field-error{font-size:12px;color:var(--danger);margin-top:5px;font-weight:650}.field-ok{font-size:12px;color:var(--ready);margin-top:5px;font-weight:650}.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;padding:10px 16px;border-radius:9px;border:1px solid var(--line);background:var(--card);color:var(--ink);font-family:inherit;font-size:14px;font-weight:650;cursor:pointer;white-space:nowrap;transition:background .14s,border-color .14s,transform .08s,box-shadow .14s}.btn:hover:not(:disabled){background:var(--card-2);border-color:var(--ink-3)}.btn:active:not(:disabled){transform:translateY(1px)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:linear-gradient(180deg,var(--brand-2),var(--brand));border-color:var(--brand);color:#fff;box-shadow:0 1px 2px #1215281f}.btn-primary:hover:not(:disabled){background:var(--brand-ink);border-color:var(--brand-ink)}.btn-ready{background:linear-gradient(180deg,var(--ready-2),var(--ready));border-color:var(--ready);color:#fff}.btn-ready:hover:not(:disabled){filter:brightness(1.07)}.btn-danger{color:var(--danger);border-color:var(--danger-line);background:var(--danger-soft)}.btn-ghost{background:transparent;border-color:transparent;color:var(--ink-2)}.btn-ghost:hover:not(:disabled){background:var(--card-2);border-color:transparent}.btn-sm{padding:6px 11px;font-size:13px;border-radius:8px}.btn-lg{padding:13px 22px;font-size:16px;border-radius:10px}.btn-block{width:100%}:focus-visible{outline:2px solid var(--brand);outline-offset:2px}.pill{display:inline-flex;align-items:center;gap:5px;padding:3px 10px;border-radius:999px;font-size:11.5px;font-weight:700;letter-spacing:.01em;border:1px solid var(--done-line);background:var(--done-soft);color:var(--done);white-space:nowrap}.pill-brand{border-color:var(--brand-line);background:var(--brand-soft);color:var(--brand-ink)}.pill-ready{border-color:var(--ready-line);background:var(--ready-soft);color:var(--ready)}.pill-danger{border-color:var(--danger-line);background:var(--danger-soft);color:var(--danger)}.pill-dot:before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor;display:inline-block}.tabs{display:flex;gap:3px;border-bottom:1px solid var(--line);margin-bottom:20px;overflow-x:auto}.tab{padding:10px 15px;border:none;background:none;cursor:pointer;font-family:inherit;font-size:14px;font-weight:650;color:var(--ink-3);border-bottom:2px solid transparent;white-space:nowrap;transition:color .14s,border-color .14s}.tab:hover{color:var(--ink)}.tab.active{color:var(--brand);border-bottom-color:var(--brand)}.subtabs{display:flex;gap:7px;flex-wrap:wrap;margin-bottom:14px}.subtab{display:inline-flex;align-items:center;gap:7px;padding:7px 14px;border-radius:999px;border:1px solid var(--line);background:var(--card);color:var(--ink-2);font-family:inherit;font-size:13.5px;font-weight:650;cursor:pointer;transition:background .14s,border-color .14s,color .14s}.subtab:hover{border-color:var(--ink-3)}.subtab-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.subtab-count{font-variant-numeric:tabular-nums;font-weight:800;background:var(--card-2);border-radius:999px;padding:0 7px;font-size:12px;min-width:22px;text-align:center}.subtab.active{background:var(--ink);border-color:var(--ink);color:#fff}.subtab.active .subtab-count{background:#ffffff2e;color:#fff}.pager{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 13px;border-top:1px solid var(--line-soft);background:var(--card-2)}.pager-info{font-size:12.5px;color:var(--ink-3);font-variant-numeric:tabular-nums}.detail-row td{background:var(--card-2);padding:12px 13px 14px}.detail-line{display:flex;justify-content:space-between;gap:12px;padding:3px 0;font-size:13.5px;max-width:460px}.table-wrap{overflow-x:auto;border:1px solid var(--line);border-radius:var(--radius);background:var(--card);box-shadow:var(--shadow-sm)}table{border-collapse:collapse;width:100%;font-size:14px}th{text-align:left;padding:10px 13px;background:var(--card-2);border-bottom:1px solid var(--line);font-size:11.5px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-3);white-space:nowrap}td{padding:11px 13px;border-bottom:1px solid var(--line-soft);vertical-align:middle}tr:last-child td{border-bottom:none}.num{text-align:right;font-variant-numeric:tabular-nums}.alert{padding:11px 14px;border-radius:9px;font-size:14px;border:1px solid var(--danger-line);background:var(--danger-soft);color:var(--danger);margin-bottom:14px;font-weight:500}.alert-ok{border-color:var(--ready-line);background:var(--ready-soft);color:var(--ready)}.alert-info{border-color:var(--brand-line);background:var(--brand-soft);color:var(--brand-ink)}.empty{padding:40px 20px;text-align:center;color:var(--ink-3)}.empty-title{font-weight:700;color:var(--ink-2);margin-bottom:4px}.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:11px}.stat{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:14px 16px;box-shadow:var(--shadow-sm)}.stat-label{font-size:11.5px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-3)}.stat-value{font-size:26px;font-weight:800;letter-spacing:-.03em;margin-top:3px;font-variant-numeric:tabular-nums}.stat-brand .stat-value{color:var(--brand)}.stat-ready .stat-value{color:var(--ready)}.cat-group{margin-bottom:22px}.cat-title{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-3);margin-bottom:9px}.item-row{display:flex;align-items:center;gap:12px;padding:13px 15px;background:var(--card);border:1px solid var(--line);border-radius:var(--radius);margin-bottom:8px;transition:border-color .14s,background .14s,box-shadow .14s}.item-row:hover{box-shadow:var(--shadow-sm)}.item-row.in-cart{border-color:var(--brand-line);background:var(--brand-soft)}.item-name{font-weight:650}.item-meta{font-size:12.5px;color:var(--ink-3)}.qty{display:flex;align-items:center;border:1px solid var(--line);border-radius:9px;overflow:hidden;background:var(--card)}.qty button{width:36px;height:36px;border:none;background:var(--card);font-size:18px;font-weight:700;color:var(--brand);cursor:pointer;line-height:1}.qty button:hover:not(:disabled){background:var(--brand-soft)}.qty button:disabled{color:var(--ink-3);cursor:not-allowed}.qty-value{min-width:34px;text-align:center;font-weight:700;font-variant-numeric:tabular-nums}.cartbar{position:sticky;bottom:0;z-index:15;background:#fffffff2;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-top:1px solid var(--line);padding:13px 18px;margin:0 -18px;box-shadow:0 -8px 26px -16px #12152880;display:flex;align-items:center;gap:12px}.steps{display:flex;gap:6px;margin-bottom:18px}.step{flex:1;height:4px;border-radius:2px;background:var(--line);transition:background .25s}.step.done{background:var(--brand)}.board-page{min-height:100vh;padding:20px}.board-head{display:flex;align-items:baseline;justify-content:space-between;gap:14px;margin-bottom:18px;flex-wrap:wrap;max-width:1400px;margin-left:auto;margin-right:auto}.board-layout{display:grid;grid-template-columns:290px minmax(0,1fr);gap:18px;max-width:1400px;margin:0 auto;align-items:start}.qr-panel{position:sticky;top:20px;background:var(--card);border:1px solid var(--line);border-radius:var(--radius-lg);padding:20px;box-shadow:var(--shadow);text-align:center}.qr-panel .qr-img{width:100%;max-width:230px;aspect-ratio:1;border:1px solid var(--line-soft);border-radius:10px;background:#fff;padding:9px;display:block;margin:0 auto}.qr-title{font-size:17px;font-weight:800;letter-spacing:-.02em;margin-bottom:3px}.qr-sub{font-size:12.5px;color:var(--ink-3);margin-bottom:14px}.qr-url{margin-top:13px;font-family:var(--mono);font-size:11.5px;color:var(--ink-3);word-break:break-all;line-height:1.45}.qr-cta{margin-top:12px;padding:9px 12px;border-radius:9px;background:var(--brand-soft);border:1px solid var(--brand-line);color:var(--brand-ink);font-size:13px;font-weight:700}.auth-layout{min-height:100vh;display:grid;grid-template-columns:1.02fr 1fr}.auth-brand{position:relative;overflow:hidden;color:#fff;padding:52px 48px;display:flex;flex-direction:column;justify-content:center;background:radial-gradient(620px 420px at 78% 8%,rgba(255,255,255,.16),transparent 60%),linear-gradient(150deg,#3f2470,#52308f 45%,#6d43b8)}.auth-brand:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;background-image:radial-gradient(rgba(255,255,255,.14) 1px,transparent 1px);background-size:22px 22px;opacity:.5}.auth-brand>*{position:relative;z-index:1}.auth-mark{display:flex;align-items:baseline;gap:9px;margin-bottom:30px}.auth-mark .ta{font-size:30px;font-weight:800;color:#f0c98a;line-height:1}.auth-mark .en{font-size:22px;font-weight:700;color:#fff;line-height:1}.auth-tagline{font-size:clamp(27px,3vw,40px);font-weight:800;letter-spacing:-.035em;line-height:1.12;margin-bottom:14px;max-width:15ch}.auth-sub{font-size:15.5px;color:#ffffffc7;max-width:42ch;margin-bottom:32px}.auth-points{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:15px}.auth-point{display:flex;gap:13px;align-items:flex-start}.auth-point-num{flex-shrink:0;width:27px;height:27px;border-radius:8px;background:#ffffff24;border:1px solid rgba(255,255,255,.22);display:grid;place-items:center;font-size:12.5px;font-weight:800;font-variant-numeric:tabular-nums}.auth-point-text{font-size:14.5px;color:#ffffffe6;line-height:1.45}.auth-point-text b{color:#fff;font-weight:700}.auth-foot{margin-top:34px;font-size:12.5px;color:#ffffff8c}.auth-panel{display:flex;align-items:center;justify-content:center;padding:40px 24px;background:var(--card)}.auth-inner{width:100%;max-width:400px}.auth-title{font-size:26px;font-weight:800;letter-spacing:-.03em}.auth-lede{color:var(--ink-3);font-size:14.5px;margin:6px 0 24px}@media (max-width: 900px){.auth-layout{grid-template-columns:1fr;min-height:0}.auth-brand{padding:32px 24px 30px}.auth-tagline{font-size:27px;max-width:none}.auth-sub{margin-bottom:22px}.auth-points,.auth-foot{display:none}.auth-panel{padding:28px 20px 56px}}.board-stack{display:flex;flex-direction:column;gap:14px}.pane{background:var(--card);border:1px solid var(--line);border-radius:var(--radius-lg);overflow:hidden;box-shadow:var(--shadow-sm)}.pane-head{padding:13px 18px;border-bottom:2px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:10px}.pane-title{font-size:16px;font-weight:800;letter-spacing:-.02em;display:flex;align-items:center;gap:9px}.pane-title:before{content:"";width:9px;height:9px;border-radius:50%;background:currentColor;flex-shrink:0}.pane-count{font-size:13px;font-weight:800;color:var(--ink-3);font-variant-numeric:tabular-nums;background:var(--card-2);border:1px solid var(--line);border-radius:999px;padding:1px 11px;min-width:34px;text-align:center}.pane-prog .pane-head{border-bottom-color:var(--wait);background:linear-gradient(180deg,var(--wait-soft),transparent)}.pane-prog .pane-title{color:var(--wait)}.pane-ready .pane-head{border-bottom-color:var(--ready);background:linear-gradient(180deg,var(--ready-soft),transparent)}.pane-ready .pane-title{color:var(--ready)}.pane-done .pane-head{border-bottom-color:var(--done);background:linear-gradient(180deg,var(--done-soft),transparent)}.pane-done .pane-title{color:var(--done)}.code-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(86px,1fr));gap:8px;padding:14px 18px;min-height:78px;align-content:start}.code-chip{font-family:var(--mono);font-variant-numeric:tabular-nums;font-size:19px;font-weight:700;letter-spacing:-.01em;padding:9px 6px;border-radius:8px;text-align:center;border:1px solid var(--line);background:var(--card-2);color:var(--ink-2);animation:chip-in .28s ease-out}@keyframes chip-in{0%{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:none}}.pane-prog .code-chip{border-color:var(--wait-line);background:var(--wait-soft);color:var(--wait)}.pane-ready .code-chip{border-color:var(--ready-line);background:var(--ready-soft);color:var(--ready);font-weight:800}.code-chip.mine{outline:3px solid var(--wait);outline-offset:2px}.pane-ready .code-chip.mine{outline-color:var(--ready);animation:pulse-mine 1.6s ease-in-out infinite}@keyframes pulse-mine{0%,to{opacity:1}50%{opacity:.6}}.pane-empty{grid-column:1 / -1;text-align:center;color:var(--ink-3);font-size:13.5px;padding:20px 0}.dots{display:flex;gap:6px;justify-content:center;align-items:center;padding:0 18px 14px}.dot{width:7px;height:7px;border-radius:50%;background:var(--line);border:none;padding:0;cursor:pointer;transition:width .2s,background .2s}.dot.on{width:22px;border-radius:4px;background:var(--wait)}.pane-ready .dot.on{background:var(--ready)}.pane-done .dot.on{background:var(--done)}@media (max-width: 900px){.board-layout{grid-template-columns:1fr}.qr-panel{position:static}.qr-panel .qr-img{max-width:190px}.code-grid{grid-template-columns:repeat(auto-fill,minmax(76px,1fr))}}@media (min-width: 1500px){.board-layout{grid-template-columns:340px minmax(0,1fr)}.code-chip{font-size:26px;padding:13px 8px}.pane-title{font-size:20px}}.qr-box{display:flex;gap:20px;align-items:flex-start;flex-wrap:wrap}.qr-img{width:200px;height:200px;border:1px solid var(--line);border-radius:var(--radius);background:#fff;padding:8px}.link-box{display:flex;align-items:center;gap:8px;background:var(--card-2);border:1px solid var(--line);border-radius:9px;padding:10px 13px;font-family:var(--mono);font-size:13.5px;word-break:break-all}.spinner{width:17px;height:17px;border:2px solid var(--line);border-top-color:var(--brand);border-radius:50%;animation:spin .65s linear infinite;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}@media (max-width: 720px){.shell,.shell-narrow{padding-left:14px;padding-right:14px}.cartbar{margin:0 -14px}h1{font-size:24px}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation:none!important;transition:none!important}}
