@import "https://fonts.googleapis.com/css2?family=DM+Mono:wght@400;500&family=Manrope:wght@400;500;600;700;800&display=swap";:root{color:#20231f;font-synthesis:none;--ink:#20231f;--muted:#7b8078;--line:#dedfd6;--lime:#c7f36b;--cream:#f7f7f2;--red:#d85e4d;background:#f7f7f2;font-family:Manrope,sans-serif}*{box-sizing:border-box}body{background:var(--cream);min-width:320px;margin:0}button,input{font:inherit}button{cursor:pointer;border:0}.auth-shell{grid-template-columns:minmax(0,1fr) 32%;min-height:100vh;display:grid}.auth-card{place-self:center;width:min(440px,100% - 48px);padding:32px 0}.auth-aside{background:var(--ink);color:var(--lime);letter-spacing:-.08em;align-items:flex-end;padding:9vw;font-size:clamp(3rem,7vw,7rem);font-weight:800;line-height:.92;display:flex}.auth-aside span{color:#62685f;letter-spacing:0;align-self:flex-start;margin-top:10px;margin-right:16px;font:500 14px DM Mono,monospace}.brand-mark{background:var(--lime);width:44px;height:44px;color:var(--ink);letter-spacing:-.08em;border-radius:50%;place-items:center;font:600 13px DM Mono,monospace;display:grid}.brand-mark.small{width:34px;height:34px;font-size:10px}.eyebrow{color:var(--muted);letter-spacing:.13em;margin:0 0 18px;font:500 11px DM Mono,monospace}h1,h2,h3,p{margin-top:0}h1{letter-spacing:-.08em;margin-bottom:16px;font-size:clamp(2.6rem,6vw,5rem);line-height:.98}h1 em{color:#8f9959;font-style:normal}.auth-card h1{margin-top:40px;font-size:clamp(2.6rem,7vw,4.8rem)}.muted{color:var(--muted);line-height:1.7}.stack{gap:16px;margin-top:34px;display:grid}label{color:var(--muted);gap:8px;font:500 12px DM Mono,monospace;display:grid}input{border:1px solid var(--line);width:100%;color:var(--ink);background:#fff;border-radius:10px;outline:none;padding:14px 15px}input:focus{border-color:var(--ink);box-shadow:0 0 0 3px #c7f36b59}.auth-tabs{border-bottom:1px solid var(--line);gap:22px;margin-top:42px;display:flex}.auth-tabs button{color:var(--muted);background:0 0;border-bottom:2px solid #0000;padding:0 0 12px}.auth-tabs button.active{color:var(--ink);border-color:var(--ink)}.primary-button,.outline-button,.download-button{border-radius:999px;justify-content:center;align-items:center;gap:10px;padding:13px 18px;font-weight:700;text-decoration:none;display:inline-flex}.primary-button{background:var(--ink);color:var(--lime);margin-top:6px}.primary-button:hover{background:#394136}.outline-button{border:1px solid var(--ink);color:var(--ink);background:0 0}.error-message{color:var(--red);font-size:13px;line-height:1.5}.loading{min-height:100vh;color:var(--muted);place-items:center;display:grid}.app-shell{width:min(1180px,100% - 56px);margin:0 auto;padding-bottom:80px}.topbar{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;height:82px;display:flex}.brand,.user-menu{align-items:center;gap:11px;font-size:14px;font-weight:700;display:flex}.user-menu{color:var(--muted);font-size:12px}.user-menu button,.icon-button{color:var(--muted);background:0 0;place-items:center;padding:8px;display:grid}.hero{justify-content:space-between;align-items:flex-end;padding:90px 0 62px;display:flex}.hero h1{max-width:660px}.hero-number{color:var(--ink);letter-spacing:-.1em;font:500 clamp(3rem,8vw,7rem) DM Mono,monospace}.hero-number span{color:var(--muted);letter-spacing:.08em;text-align:right;font-size:11px;display:block}.workspace-grid{grid-template-columns:1.35fr .65fr;gap:18px;display:grid}.upload-panel{background:var(--lime);cursor:pointer;border-radius:18px;flex-direction:column;justify-content:center;align-items:flex-start;min-height:300px;padding:42px;transition:transform .2s,box-shadow .2s;display:flex}.upload-panel:hover{transform:translateY(-3px);box-shadow:0 10px 24px #20231f14}.upload-icon{background:var(--ink);width:46px;height:46px;color:var(--lime);border-radius:50%;place-items:center;margin-bottom:28px;display:grid}.upload-panel h2{letter-spacing:-.05em;margin-bottom:9px;font-size:27px}.upload-panel p{color:#667040;margin-bottom:28px;font-size:13px}.how-panel{border:1px solid var(--line);background:#fff;border-radius:18px;padding:34px}.how-step{border-bottom:1px solid var(--line);align-items:center;gap:18px;padding:24px 0;display:flex}.how-step:last-child{border-bottom:0}.how-step strong{color:#9ca59b;font:500 12px DM Mono,monospace}.how-step span{font-weight:600}.page-error{margin:22px 0 0}.jobs-section{margin-top:82px}.section-heading{border-bottom:1px solid var(--ink);justify-content:space-between;align-items:end;padding-bottom:16px;display:flex}.section-heading .eyebrow{margin-bottom:8px}.section-heading h2{letter-spacing:-.06em;margin:0;font-size:28px}.job-list{gap:10px;margin-top:16px;display:grid}.job-card{border-bottom:1px solid var(--line);grid-template-columns:auto minmax(0,1fr) auto auto;align-items:center;gap:18px;padding:20px;display:grid}.file-icon{border:1px solid var(--line);color:#899181;border-radius:10px;place-items:center;width:40px;height:40px;display:grid}.job-main h3{text-overflow:ellipsis;white-space:nowrap;margin:0 0 6px;font-size:15px;overflow:hidden}.job-main p{color:var(--muted);margin:0;font-size:12px}.job-status{color:var(--muted);white-space:nowrap;align-items:center;gap:7px;font-size:12px;display:flex}.job-status svg{width:16px;height:16px}.job-status.completed{color:#5e863e}.job-status.failed{color:var(--red)}.job-status small{display:none}.job-actions{align-items:center;gap:12px;display:flex}.download-button{background:var(--ink);color:var(--lime);padding:9px 13px;font-size:12px}.delete-button{color:#a1a59e;background:0 0;font-size:12px}.delete-button:hover{color:var(--red)}.empty-state{min-height:160px;color:var(--muted);align-content:center;place-items:center;gap:10px;display:grid}.empty-state p{margin:0;font-size:13px}.spin{animation:1.2s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.top-tabs{gap:6px;display:flex}.top-tabs button{color:var(--muted);background:0 0;border-radius:999px;align-items:center;gap:6px;padding:8px 14px;font-size:13px;font-weight:600;display:inline-flex}.top-tabs button.active{background:var(--ink);color:var(--lime)}.nav-link,.top-tabs a{color:var(--muted);background:0 0;border-radius:999px;align-items:center;gap:6px;padding:8px 14px;font-size:13px;font-weight:600;text-decoration:none;display:inline-flex}.top-tabs a.active{background:var(--ink);color:var(--lime)}.admin-section{padding:22px 0 60px}.admin-heading{flex-wrap:wrap;justify-content:space-between;align-items:end;gap:16px;display:flex}.admin-stats{flex-wrap:wrap;gap:8px;display:flex}.admin-stats span{border:1px solid var(--line);color:var(--muted);background:#fff;border-radius:999px;padding:6px 12px;font-size:12px}.sub-heading{flex-wrap:wrap;justify-content:space-between;align-items:end;gap:14px;margin:34px 0 14px;display:flex}.sub-heading h3{letter-spacing:-.04em;margin:0;font-size:21px}.admin-controls{flex-wrap:wrap;gap:10px;display:flex}.admin-controls select,.admin-controls input{border:1px solid var(--line);min-width:130px;color:var(--ink);background:#fff;border-radius:10px;padding:9px 11px;font-size:13px}.admin-controls input{flex:180px}.admin-table-wrap{border:1px solid var(--line);background:#fff;border-radius:14px;overflow-x:auto}.admin-table{border-collapse:collapse;width:100%;font-size:13px}.admin-table th{text-align:left;color:var(--muted);border-bottom:1px solid var(--line);white-space:nowrap;padding:12px 16px;font-weight:600}.admin-table td{border-bottom:1px solid var(--line);color:var(--ink);white-space:nowrap;padding:12px 16px}.admin-table tr:last-child td{border-bottom:0}.empty-cell{text-align:center;color:var(--muted);padding:28px}.role-admin{color:var(--lime);background:var(--ink);border-radius:999px;padding:2px 10px;font-size:11px}.job-tag{border-radius:999px;padding:3px 10px;font-size:11px}.job-tag.pending{color:#6b715a;background:#f1f1ea}.job-tag.processing{color:#4a6b8a;background:#eef3f7}.job-tag.completed{color:#5e863e;background:#e6f0e2}.job-tag.failed{color:var(--red);background:#f8e9e6}.job-tag b{cursor:help}@media (width<=640px){.top-tabs button{padding:7px 10px;font-size:12px}.admin-table td,.admin-table th{padding:10px 12px}}@media (width<=760px){.auth-shell{display:block}.auth-aside{display:none}.auth-card{padding-top:54px}.app-shell{width:min(100% - 32px,600px)}.hero{padding:58px 0 42px}.hero-number{display:none}.workspace-grid{grid-template-columns:1fr}.upload-panel{min-height:260px;padding:30px}.how-panel{padding:25px}.jobs-section{margin-top:56px}.job-card{grid-template-columns:auto minmax(0,1fr);gap:12px}.job-status,.job-actions{grid-column:2}.job-actions{justify-content:flex-start}.job-status{font-size:11px}.job-main h3{max-width:220px}.topbar{height:52px}.pay-hero{padding:18px 0 12px}.pay-hero h1{margin-bottom:8px;font-size:clamp(1.7rem,7.5vw,2.2rem);line-height:1.08}.pay-hero .muted{margin-bottom:0;font-size:12px;line-height:1.5}.pay-hero .eyebrow{margin-bottom:8px}}.pay-hero{padding-bottom:40px}.entry-stack{gap:16px;max-width:640px;margin:0 auto;display:grid}.entry-card{border:1px solid var(--line);background:#fff;border-radius:18px;padding:26px 28px}.entry-pay,.entry-card-redeem{text-align:left;align-items:center;gap:18px;display:flex}.entry-pay .upload-icon,.upload-icon.small{flex-shrink:0;width:42px;height:42px;margin-bottom:0}.entry-pay .upload-icon svg,.upload-icon.small svg{width:21px;height:21px}.entry-pay-main,.entry-redeem-main{flex:1;min-width:0}.entry-pay-main h2,.entry-redeem-main h2{letter-spacing:-.03em;margin:0 0 5px;font-size:18px}.entry-pay-main p{color:var(--muted);margin:0;font-size:12.5px;line-height:1.6}.entry-pay-main .error-message{margin-top:10px}.entry-pay-btn,.redeem-row .primary-button{white-space:nowrap;flex-shrink:0;justify-content:center;min-width:150px;margin:0;padding:11px 20px;font-size:14px}.entry-card-redeem{padding:20px 28px}.entry-redeem-main h2{font-size:18px}.entry-redeem-main p{color:var(--muted);margin:0 0 10px;font-size:12.5px;line-height:1.6}.redeem-row{gap:8px;display:flex}.redeem-row .redeem-input{border:1px solid var(--line);letter-spacing:.03em;border-radius:10px;flex:1;min-width:0;padding:10px 12px;font-family:DM Mono,monospace;font-size:13px}.pay-wait,.pay-success{text-align:center;place-items:center;gap:16px;display:grid}.pay-success{justify-items:center;max-width:420px;margin:0 auto}.entry-pay .pay-success{text-align:center}.pay-wait h2{margin-top:8px}.qr-wrap{border:1px solid var(--line);background:#fff;border-radius:16px;padding:14px}.mock-qr{color:#7a8070;letter-spacing:.05em;background:#f4f4ee;border-radius:10px;place-items:center;width:240px;height:240px;font:600 15px DM Mono,monospace;display:grid}.pay-status{color:var(--muted);align-items:center;gap:8px;font-size:13px;display:inline-flex}.pay-success h2{letter-spacing:-.04em;font-size:24px}.share-box{background:var(--lime);border-radius:12px;align-items:center;gap:10px;max-width:100%;padding:10px 12px;display:flex}.share-box a{color:var(--ink);word-break:break-all;font-weight:700;text-decoration:none}.share-box .outline-button{white-space:nowrap;padding:8px 12px;font-size:12px}@media (width<=640px){.entry-stack{max-width:100%}.entry-card{padding:22px 20px}.entry-pay{text-align:center;flex-direction:column;align-items:center;gap:14px}.entry-pay-btn,.redeem-row .primary-button{width:100%;min-width:0}.entry-card-redeem{text-align:center;flex-direction:column;align-items:stretch}.entry-card-redeem .upload-icon{margin:0 auto}.redeem-row{flex-direction:column}.redeem-row .primary-button{width:100%;min-width:0}}.auto-refresh-hint{text-align:center;margin-top:14px;font-size:12px}.admin-login{border:1px solid var(--line);text-align:center;background:#fff;border-radius:18px;place-items:center;gap:14px;max-width:400px;margin:90px auto 0;padding:40px;display:grid}.admin-token-input{border:1px solid var(--line);border-radius:10px;width:100%;padding:11px 13px;font-size:14px}.token-cell{font-family:DM Mono,monospace;font-size:12px}.link-cell{color:var(--ink);word-break:break-all;white-space:normal;min-width:260px;text-decoration:underline}.space-detail-row td{background:#fafaf6}.space-detail{gap:10px;padding:6px 0 6px 24px;display:grid}.detail-job{border:1px solid var(--line);background:#fff;border-radius:10px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:14px;padding:12px 14px;display:flex}.detail-job-info{flex-wrap:wrap;align-items:center;gap:12px;min-width:200px;display:flex}.detail-job-info b{font-size:13px}.detail-job-info span{font-size:12px}.detail-job-actions{align-items:center;gap:10px;display:flex}.detail-upload{padding:8px 12px;font-size:12px}.space-actions{align-items:center;gap:6px;display:flex}.action-btn{border:1px solid var(--line);width:30px;height:30px;color:var(--muted);cursor:pointer;background:#fff;border-radius:8px;justify-content:center;align-items:center;line-height:0;transition:all .15s;display:inline-flex}.action-btn svg{display:block}.action-btn:hover{transform:translateY(-1px)}.action-btn.upload{color:var(--ink)}.action-btn.upload:hover{background:var(--lime);border-color:var(--lime);color:var(--ink)}.action-btn.complete{color:#5e863e}.action-btn.complete:hover{background:#e6f0e2;border-color:#5e863e}.action-btn.delete{color:var(--red)}.action-btn.delete:hover{border-color:var(--red);background:#f8e9e6}.copy-link-cell{white-space:nowrap;align-items:center;gap:6px;display:flex}.copy-btn{border:1px solid var(--line);width:24px;height:24px;color:var(--muted);background:#fff;border-radius:6px;justify-content:center;align-items:center;line-height:0;display:inline-flex}.copy-btn svg{display:block}.copy-btn:hover{border-color:var(--ink);color:var(--ink)}.upload-panel-large{min-height:340px;padding:52px 44px}.upload-btns{flex-wrap:wrap;gap:12px;display:flex}.upload-big{padding:15px 22px;font-size:15px}.pay-expired{justify-items:center;gap:10px;margin-top:6px;display:grid}.pay-expired .primary-button{margin-top:0}.gen-panel{border:1px solid var(--line);background:#fff;border-radius:14px;gap:12px;margin:22px 0 0;padding:20px 22px;display:grid}.gen-title{align-items:center;gap:8px;font-size:15px;font-weight:700;display:flex}.gen-tip{margin:0;font-size:12.5px}.gen-controls{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.gen-controls input{border:1px solid var(--line);width:90px;color:var(--ink);background:#fff;border-radius:10px;padding:9px 11px;font-size:13px}.gen-controls .primary-button{margin-top:0;padding:10px 16px;font-size:13px}.gen-controls .outline-button{padding:10px 14px;font-size:12.5px}.gen-message{margin:0;font-size:12.5px}.gen-results{border-top:1px solid var(--line);padding-top:12px}.gen-results .eyebrow{margin-bottom:10px}.gen-empty{margin:0;font-size:12.5px}.gen-batches{gap:10px;margin:0;padding:0;list-style:none;display:grid}.gen-batch{border:1px solid var(--line);background:#fafaf6;border-radius:12px;overflow:hidden}.gen-batch-head{grid-template-columns:minmax(0,1fr) minmax(0,2fr) auto auto;align-items:center;gap:10px;padding:10px 12px;display:grid}.gen-batch-toggle{color:var(--ink);cursor:pointer;background:0 0;border-radius:8px;justify-self:start;align-items:center;gap:10px;padding:6px 10px 6px 4px;display:inline-flex}.gen-batch-toggle:hover{background:#f0f0ea}.gen-batch-chevron{color:var(--muted);place-items:center;display:grid}.gen-batch-label{color:var(--ink);font-family:DM Mono,monospace;font-size:13.5px;font-weight:700}.gen-batch-count{color:var(--muted);border:1px solid var(--line);background:#fff;border-radius:999px;padding:2px 10px;font-size:12px}.gen-batch-col-btn{white-space:nowrap;justify-self:end;padding:7px 12px;font-size:12px}.gen-batch-items{border-top:1px solid var(--line);gap:6px;max-height:280px;margin:0;padding:8px 12px 12px;list-style:none;display:grid;overflow-y:auto}.gen-batch-items li{border:1px solid var(--line);background:#fff;border-radius:10px;grid-template-columns:minmax(0,1fr) minmax(0,2fr) auto auto;align-items:center;gap:10px;padding:8px 12px;font-size:12.5px;display:grid}.gen-batch-items code{color:var(--ink);text-overflow:ellipsis;white-space:nowrap;font-family:DM Mono,monospace;font-size:12px;overflow:hidden}.gen-batch-items a{color:var(--ink);word-break:break-all;text-overflow:ellipsis;white-space:nowrap;text-decoration:underline;overflow:hidden}.gen-batch-items .copy-btn{justify-self:end}
