@charset "UTF-8";
:root{color-scheme:light;--desk:hsl(38 17% 93%);--paper:hsl(40 33% 99%);--ink:hsl(25 9% 15%);--muted:hsl(28 6% 40%);--line:hsl(33 12% 84%);--well:hsl(35 17% 95%);--accent:hsl(12 78% 42%);--accent-dark:hsl(10 80% 32%);--accent-soft:hsl(16 83% 95%);--blue:hsl(216 56% 42%);--error:hsl(4 71% 37%);--shadow-1:0 1px 2px hsl(28 20% 15%/.08);--shadow-2:0 2px 3px hsl(28 20% 15%/.06),0 8px 20px -10px hsl(28 20% 15%/.16);--shadow-3:0 2px 4px hsl(28 20% 15%/.04),0 16px 36px -16px hsl(28 20% 15%/.21);--shadow-4:0 4px 8px hsl(28 20% 15%/.08),0 24px 48px -16px hsl(28 20% 15%/.25);--shadow-5:0 8px 16px hsl(28 20% 15%/.08),0 40px 80px -16px hsl(28 20% 15%/.3);--ease:cubic-bezier(.22,1,.36,1);--spring:cubic-bezier(.34,1.45,.64,1);font:16px/1.6 ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;color:var(--ink);background:var(--desk);font-synthesis:none}
*{box-sizing:border-box}body{margin:0}button,input,textarea{font:inherit}button,a,label[for=import-file]{-webkit-tap-highlight-color:transparent}button{color:inherit;cursor:pointer;touch-action:manipulation;transition:transform 320ms var(--spring),background-color 150ms var(--ease),color 150ms var(--ease),opacity 150ms var(--ease)}a{color:inherit;text-decoration:none}button:disabled{opacity:.48;cursor:wait}button svg,.import-link svg{width:20px;height:20px;flex-shrink:0;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}button:active:not(:disabled){transform:translateY(2px) scale(.98);transition-duration:0s}button:focus-visible,a:focus-visible,textarea:focus-visible,summary:focus-visible,input:focus-visible{outline:3px solid var(--blue);outline-offset:4px}h1,h2,h3,h4,p{margin:0}h1,h2,h3,h4{font-weight:650}h2,h3,h4{text-wrap:balance}p{color:var(--muted)}[hidden]{display:none!important}.wrap{width:min(1184px,calc(100% - 96px));margin-inline:auto}.skip{position:fixed;top:8px;left:8px;z-index:99;background:#fff;padding:12px 24px;border-radius:8px;transform:translateY(-150%)}.skip:focus{transform:none}
.site-header{height:112px;display:flex;align-items:center;gap:24px}.brand{display:flex;align-items:center;gap:12px;font-size:20px;font-weight:750;letter-spacing:-.5px}.brand-mark{width:40px;height:40px;display:grid;place-items:center;color:#fff;border-radius:12px;background:linear-gradient(160deg,hsl(17 82% 56%),var(--accent));box-shadow:inset 0 1px 1px #ffffff80,0 3px 0 var(--accent-dark),0 6px 12px #b4432629;transform:rotate(-5deg)}.brand-mark svg{width:26px;height:26px;stroke:currentColor;stroke-width:1.6;stroke-linejoin:round}.site-subtitle{font-size:14px;color:var(--muted);border-left:1px solid var(--line);padding-left:24px}.help-button{margin-left:auto;border:0;background:none;font-size:16px;padding:12px 0 12px 16px;display:flex;gap:16px}.studio{display:grid;grid-template-columns:minmax(0,600px) minmax(320px,1fr);align-items:center;gap:80px;padding:48px 0 64px}.tool-column{min-width:0}h1{font-size:60px;letter-spacing:-2px;line-height:1.2;font-weight:750}h1 span{color:var(--accent)}.hero-intro{font-size:20px;margin-top:24px}.input-panel{background:var(--paper);margin-top:32px;border:1px solid #fff;border-radius:24px;padding:24px;box-shadow:var(--shadow-3),inset 0 -1px 0 hsl(30 12% 82%/.6)}#input-title{display:block;font-size:16px;font-weight:650;margin-bottom:12px}.input-well{position:relative;display:flex;border:1px solid hsl(30 10% 76%);border-radius:14px;background:var(--well);box-shadow:inset 0 2px 4px #31250d0a,0 1px 0 white;transition:border-color 150ms var(--ease)}.input-well:focus-within{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft),inset 0 2px 3px #31250d08}textarea{min-width:0;border:0;background:none;color:var(--ink);resize:vertical}#code-input{width:100%;padding:16px 40px 16px 16px;min-height:96px;max-height:240px;line-height:1.6;font-size:18px;outline:none}#code-input::placeholder{color:hsl(28 5% 43%);font-size:16px}.input-well-icon{position:absolute;right:16px;bottom:16px;font-size:24px;color:hsl(30 6% 60%);pointer-events:none}.form-actions{display:flex;gap:12px;align-items:center;margin-top:20px}.form-actions p{font-size:14px;line-height:1.6;margin-right:auto}.form-actions p span{font-size:14px}.primary{min-height:48px;display:inline-flex;align-items:center;justify-content:center;gap:12px;padding:12px 24px;border:1px solid var(--accent-dark);border-top-color:hsl(15 68% 51%);border-radius:12px;background:linear-gradient(180deg,hsl(14 80% 45%),var(--accent));color:#fff;font-size:16px;font-weight:650;white-space:nowrap;box-shadow:inset 0 1px 0 #ffffff33,0 3px 0 var(--accent-dark),0 6px 12px hsl(12 70% 32%/.15)}.primary:active:not(:disabled){box-shadow:inset 0 1px 3px #57200d20,0 1px 0 var(--accent-dark);transform:translateY(2px) scale(.99)}.button{min-height:44px;border:1px solid var(--line);border-top-color:white;border-radius:10px;background:linear-gradient(#fff,#f6f4f0);padding:10px 16px;box-shadow:0 2px 1px #4839210f;display:inline-flex;align-items:center;justify-content:center;gap:8px;font-size:14px;white-space:nowrap}.text-button{border:0;background:none;color:var(--accent);font-weight:600;font-size:14px;padding:10px 0;min-height:44px;text-align:left}.input-bottom{display:flex;align-items:center;justify-content:space-between;gap:16px;border-top:1px solid hsl(30 16% 89%);padding-top:16px;margin-top:24px;font-size:14px;color:var(--muted)}.import-link{cursor:pointer;display:flex;align-items:center;gap:8px;color:var(--ink);min-height:32px}.import-link svg{width:18px;height:18px}.file-input{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}.input-bottom:has(input:focus-visible) .import-link{outline:3px solid var(--blue);outline-offset:4px}.error{margin-top:20px;padding:12px 16px;border-radius:10px;background:hsl(7 85% 95%);color:var(--error);font-size:14px;white-space:pre-line;overflow-wrap:anywhere}.examples{display:flex;align-items:center;gap:4px;flex-wrap:wrap;margin-top:20px;font-size:14px}.examples>span{color:var(--muted);margin-right:8px}.examples button{border:0;background:transparent;padding:8px;min-height:40px;color:var(--muted);font-size:14px;white-space:nowrap}#all-examples{color:var(--accent)}.last-status{font-size:14px;margin-top:12px;color:var(--blue)}
.card-scene{position:relative;perspective:1200px;padding:32px 8px 16px;isolation:isolate}.card-stack{position:relative;max-width:352px;margin:auto;transform:rotate(6deg);transition:transform 600ms var(--spring);transform-style:preserve-3d}.preset-card{display:block;width:100%;padding:12px;border:1px solid #fff;border-radius:20px;background:var(--paper);text-align:left;box-shadow:inset 0 -2px 1px #b0a59452,0 4px 6px -3px #4a38273d,0 22px 35px -14px #44332359;transform:translateZ(12px);transition:transform 420ms var(--spring)}.photo-frame{position:relative;overflow:hidden;border-radius:10px;background:hsl(215 25% 74%)}.photo-frame img{display:block;width:100%;height:240px;object-fit:cover;object-position:36% center;pointer-events:none}.photo-frame:after{content:"";position:absolute;inset:0;box-shadow:inset 0 0 0 1px #0001,inset 0 1px 3px #0002;border-radius:inherit;pointer-events:none}.photo-label{position:absolute;left:16px;top:16px;font-size:14px;line-height:1.5;background:#ffffffeb;padding:4px 12px;border-radius:6px;box-shadow:var(--shadow-1);color:var(--ink)}.preset-card-body{padding:20px 12px 12px}.preset-card-body h2{font-size:30px;line-height:1.3;letter-spacing:-1px}.preset-card-body p{font-size:14px;margin-top:8px}.preset-card-code{display:flex;align-items:center;justify-content:space-between;border-top:1px dashed var(--line);padding-top:16px;margin-top:20px}.preset-card-code b{font-family:ui-monospace,"Cascadia Code",Consolas,monospace;font-size:30px;letter-spacing:2px;font-weight:650}.card-arrow{width:40px;height:40px;display:grid;place-items:center;background:var(--accent-soft);color:var(--accent);border-radius:50%;font-size:24px}.back-card{position:absolute;inset:4px 8px 8px;border-radius:20px;border:1px solid #fff;pointer-events:none}.back-card-one{background:hsl(218 31% 83%);box-shadow:var(--shadow-2);transform:rotate(-13deg) translate(-8px,4px);z-index:-1}.back-card-two{background:hsl(26 44% 86%);box-shadow:var(--shadow-2);transform:rotate(7deg) translate(4px,-4px);z-index:-2}.card-shadow{position:absolute;width:80%;height:48px;background:#4d37242b;filter:blur(20px);border-radius:50%;bottom:64px;left:16%;transform:rotate(5deg);z-index:-3}.card-caption{font-size:16px;text-align:center;margin-top:40px;color:var(--muted);display:flex;align-items:center;justify-content:center;gap:12px}.card-caption svg{width:44px;height:28px;stroke:hsl(27 7% 52%);stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;transform:rotate(-12deg)}
.progress{margin-top:24px;padding-top:20px;border-top:1px solid var(--line)}.progress-heading{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;font-size:14px}.progress-heading b{font-variant-numeric:tabular-nums;color:var(--accent)}.progress-track{height:8px;overflow:hidden;border-radius:99px;background:hsl(32 12% 85%);box-shadow:inset 0 1px 2px #3e2c0c18;margin:12px 0}.progress-track>span{display:block;width:100%;height:100%;background:linear-gradient(90deg,hsl(17 86% 61%),var(--accent));transform:scaleX(0);transform-origin:left center;transition:transform 240ms var(--ease)}.progress[data-waiting=true] .progress-track>span{background:repeating-linear-gradient(110deg,var(--accent) 0 8px,hsl(15 82% 53%) 8px 16px)}.progress-steps{display:flex;gap:16px;justify-content:space-between;font-size:14px;color:var(--muted)}.progress-steps .current{color:var(--accent);font-weight:650}.results-area{border-top:1px solid var(--line);padding-top:32px;margin-bottom:64px;min-width:0}.empty-state{display:flex;align-items:center;gap:24px;padding:16px 0}.empty-icon{display:grid;place-items:center;width:56px;height:64px;border-radius:12px;color:hsl(30 10% 50%);background:linear-gradient(160deg,#fff,#e5e1d9);box-shadow:inset 0 1px 0 white,0 2px 0 #d4cfc5,0 6px 12px #4f3e2112;flex-shrink:0;transform:rotate(-6deg)}.empty-icon svg{width:32px;height:32px;stroke:currentColor;stroke-width:1.4;stroke-linecap:round}.empty-state h2{font-size:20px;margin-bottom:8px}.empty-state p{font-size:16px}.result-list{display:flex;gap:8px;overflow:auto;padding:4px 4px 16px;scrollbar-width:thin;margin-bottom:16px}.result-list button{border:1px solid transparent;background:transparent;flex-shrink:0;padding:10px 16px;border-radius:10px;font-size:16px;min-height:44px}.result-list button[aria-current=true]{background:var(--paper);border-color:white;box-shadow:var(--shadow-2);color:var(--accent);font-weight:650}.result-heading{display:flex;justify-content:space-between;align-items:center;gap:24px;padding:8px 0 32px}.result-code{font:16px ui-monospace,Consolas,monospace;letter-spacing:1px;color:var(--accent)}.result-heading h2{font-size:36px;line-height:1.3;margin:8px 0 12px;letter-spacing:-.5px}.result-subtitle{font-size:14px;max-width:720px;line-height:1.7;overflow-wrap:anywhere}.result-grid{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:24px;align-items:start}.data-panel,.resource-panel{background:var(--paper);border:1px solid white;border-radius:20px;box-shadow:var(--shadow-2);min-width:0}.data-panel{overflow:hidden}.tabbar{display:flex;gap:4px;padding:8px;background:hsl(35 18% 90%);margin:12px;border-radius:12px;box-shadow:inset 0 1px 2px #47392110}.tabbar button{flex:1;padding:10px 12px;border:0;border-radius:8px;min-height:44px;font-size:16px;background:none;white-space:nowrap;color:var(--muted)}.tabbar button[aria-selected=true]{background:var(--paper);box-shadow:0 2px 4px #47392114;color:var(--ink);font-weight:650}#field-count{font-size:14px;margin-left:4px;opacity:.75}.tab-panel{padding:8px 24px 24px;min-width:0}.section-tools{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:20px;font-size:14px}.section-tools .text-button{flex-shrink:0}.settings-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.setting{padding-bottom:12px;border-bottom:1px solid hsl(30 16% 88%);min-width:0}.setting>span{font-size:14px;color:var(--muted);display:block}.setting b{font-size:18px;font-weight:650;margin:4px 0;display:block}.setting small{display:block;font-size:14px;line-height:1.5;color:var(--muted);overflow-wrap:anywhere}.grade-heading{display:flex;justify-content:space-between;align-items:center;margin:28px 0 16px}.grade-heading h3{font-size:18px}.checkbox{display:inline-flex;align-items:center;gap:8px;font-size:14px;cursor:pointer;min-height:40px}.checkbox input{width:16px;height:16px;accent-color:var(--accent)}.grading-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));column-gap:32px;row-gap:0}.grade-row{display:grid;grid-template-columns:1fr auto;gap:6px 12px;padding:12px 0;border-top:1px solid hsl(30 16% 90%);font-size:16px}.grade-name{min-width:0;overflow-wrap:anywhere}.grade-value{font-family:ui-monospace,Consolas,monospace;font-variant-numeric:tabular-nums;font-weight:600}.grade-row meter{grid-column:1/-1;width:100%;height:4px;appearance:none;display:block;border:none;background:hsl(35 16% 89%);border-radius:8px}.grade-row meter::-webkit-meter-bar{background:hsl(35 16% 89%);border:0;height:4px}.grade-row meter::-webkit-meter-optimum-value{background:hsl(28 13% 59%)}.grade-row meter::-moz-meter-bar{background:hsl(28 13% 59%)}.grade-row.zero{color:var(--muted)}.summary-extra{display:flex;gap:8px 24px;flex-wrap:wrap;border-top:1px solid var(--line);margin-top:24px;padding-top:20px;font-size:14px;color:var(--muted)}.info-note{font-size:14px;margin-top:20px;line-height:1.7}
.resource-panel{padding:24px}.resource-heading{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:20px}.resource-heading h3{font-size:18px}.resource-heading>span{font-size:14px;color:var(--muted)}.filter-notice,.resource-intro{font-size:14px;line-height:1.8;overflow-wrap:anywhere;margin-bottom:16px}.lut-card{padding:20px 0;border-top:1px solid var(--line)}.lut-top{display:flex;justify-content:space-between;gap:8px;font-size:14px;margin-bottom:12px}.lut-badge{color:var(--blue)}.lut-size{color:var(--muted)}.lut-card h4{font-size:20px;margin-bottom:8px}.lut-card>p{font-size:14px;line-height:1.7}.lut-filename{font-family:ui-monospace,Consolas,monospace;color:var(--muted);overflow-wrap:anywhere;margin-bottom:12px}.lut-actions{display:flex;flex-direction:column;gap:12px;margin:20px 0 12px}.bound-download{color:var(--accent);background:var(--accent-soft);border-color:hsl(17 54% 84%);border-top-color:white;font-weight:650}.lut-sha{font-size:14px;color:var(--muted)}.lut-sha summary{cursor:pointer;min-height:32px}.lut-sha p{font-family:ui-monospace,monospace;overflow-wrap:anywhere;font-size:14px;margin-top:8px}.archive-link{display:flex;align-items:center;gap:12px;margin-top:20px;border-top:1px solid var(--line);padding-top:20px}.file-glyph{background:var(--well);color:var(--muted);font-size:14px;padding:8px;border:1px solid var(--line);border-radius:8px;box-shadow:var(--shadow-1)}.archive-link>div{flex:1;min-width:0}.archive-link b{font-size:16px;font-weight:600;display:block}.archive-link>div>span{display:block;font-size:14px;color:var(--muted);margin-top:4px;line-height:1.5;overflow-wrap:anywhere}.icon-button{border:1px solid var(--line);background:white;width:44px;height:44px;border-radius:10px;display:grid;place-items:center;flex-shrink:0;box-shadow:var(--shadow-1);font-size:24px}.resource-note{font-size:14px;border-top:1px solid var(--line);margin-top:24px;padding-top:20px;line-height:1.8}.detail-wrap{overflow:auto}.detail-table{width:100%;border-collapse:collapse;font-size:14px;text-align:left;table-layout:fixed}.detail-table th{padding:8px 0 12px;color:var(--muted);font-weight:500}.detail-table td{padding:12px 0;border-top:1px solid var(--line);vertical-align:top;overflow-wrap:anywhere}.detail-table th:first-child{width:64%}.detail-table td:nth-child(2),.detail-table th:nth-child(2){text-align:right;padding-left:16px;font-family:ui-monospace,Consolas,monospace}.field-path{display:block;font-family:ui-monospace,Consolas,monospace;font-size:14px;color:var(--muted);margin-top:4px;overflow-wrap:anywhere}#json-content{margin:0;max-height:720px;overflow:auto;max-width:100%;padding:20px;border-radius:12px;background:var(--well);box-shadow:inset 0 1px 3px #3b2d140a;font:14px/1.8 ui-monospace,Consolas,monospace;tab-size:2}.download-row{display:flex;align-items:center;gap:16px;flex-wrap:wrap;margin-top:20px}.site-footer{display:flex;align-items:center;gap:24px;justify-content:space-between;border-top:1px solid var(--line);padding-block:24px 32px;font-size:14px;color:var(--muted)}.site-footer>span{font-weight:650;white-space:nowrap}.site-footer p{font-size:14px}.site-footer button{white-space:nowrap}.toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);border:1px solid white;border-radius:14px;padding:12px 24px;background:var(--paper);box-shadow:var(--shadow-4);z-index:10;font-size:16px;max-width:calc(100% - 32px);text-align:center}.help-dialog,dialog{width:min(600px,calc(100% - 32px));max-height:calc(100dvh - 64px);padding:32px;border:1px solid white;border-radius:24px;color:var(--ink);background:var(--paper);box-shadow:var(--shadow-5)}dialog::backdrop{background:hsl(30 14% 12%/.32);backdrop-filter:blur(3px)}.dialog-heading{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:28px}.dialog-heading h2{font-size:24px}.help-content{display:grid;gap:12px}.help-content h3{font-size:18px;margin-top:12px}.help-content p{font-size:16px;line-height:1.8}#copy-dialog h2{font-size:24px;margin-bottom:12px}#copy-fallback{width:100%;margin:16px 0;padding:12px;border:1px solid var(--line);border-radius:8px;background:var(--well);font-size:14px}button[data-copied=true]{color:var(--blue)}
@media(hover:hover) and (pointer:fine){button:hover:not(:disabled){transform:translateY(-2px)}.primary:hover:not(:disabled){background:linear-gradient(180deg,hsl(13 82% 43%),var(--accent-dark))}.examples button:hover,.help-button:hover,.text-button:hover{color:var(--accent-dark)}.button:hover{background:#fff}.preset-card:hover:not(:disabled){transform:translateZ(24px) translateY(-4px)}.result-list button:hover{background:#ffffff70}}
@starting-style{dialog[open]{opacity:0;transform:translateY(8px) scale(.98)}}dialog[open]{transition:opacity 180ms var(--ease),transform 240ms var(--spring)}
@media(max-width:1100px){.wrap{width:calc(100% - 64px)}.studio{gap:48px;grid-template-columns:minmax(0,1.4fr) minmax(280px,1fr)}h1{font-size:48px}.photo-frame img{height:200px}.preset-card-body h2,.preset-card-code b{font-size:24px}.result-grid{grid-template-columns:minmax(0,1fr) 300px}.form-actions p span{display:none}.examples{gap:0}.examples button{padding:8px 6px}}
@media(max-width:900px){.wrap{width:calc(100% - 48px)}.site-header{height:88px;gap:16px}.site-subtitle{display:none}.studio{grid-template-columns:1fr;gap:32px;padding-top:24px;padding-bottom:48px}.tool-column{max-width:600px;width:100%;margin:auto}h1{font-size:48px}.hero-intro{font-size:18px;margin-top:16px}.input-panel{margin-top:24px}.card-scene{max-width:400px;width:100%;margin:0 auto;padding-top:16px}.card-stack{max-width:288px;transform:rotate(5deg)}.photo-frame img{height:172px}.preset-card-body{padding:16px 8px 8px}.preset-card-body h2{font-size:24px}.preset-card-code{margin-top:16px;padding-top:12px}.card-caption{margin-top:28px;font-size:14px}.result-grid{grid-template-columns:minmax(0,1fr)}.resource-panel{padding:24px}.lut-actions{flex-direction:row;flex-wrap:wrap}.result-heading{align-items:flex-start;flex-direction:column;gap:20px}.export-button{width:100%;max-width:320px}.site-footer{flex-wrap:wrap;gap:8px 24px}.site-footer p{order:3;width:100%}.site-footer button{margin-left:auto}.result-heading h2{font-size:30px}.results-area{margin-bottom:40px}.empty-state p{font-size:14px}}
@media(max-width:440px){.wrap{width:calc(100% - 32px)}.site-header{height:80px}.brand{font-size:18px;gap:10px}.brand-mark{width:36px;height:36px}.help-button{font-size:14px;gap:8px}h1{font-size:40px;letter-spacing:-1px}.hero-intro{font-size:16px}.input-panel{padding:20px;border-radius:20px}.form-actions{gap:8px}.primary{padding:12px 16px}.input-bottom{gap:8px;font-size:14px}.examples>span{width:100%;margin-bottom:0}.examples button{padding:6px 8px 6px 0;margin-right:8px}.progress-steps{gap:4px}.tab-panel{padding:8px 16px 20px}.tabbar{padding:4px;margin:8px;gap:0}.tabbar button{font-size:14px;padding:10px 8px}#field-count{display:none}.section-tools{gap:8px;align-items:flex-start}.section-tools>p{font-size:14px}.section-tools .text-button{padding-top:0}.grading-grid{column-gap:24px}.grade-row{font-size:14px}.resource-panel{padding:20px}.empty-state{gap:16px}.empty-state h2{font-size:18px}.empty-icon{width:48px;height:56px}.help-dialog,dialog{padding:24px}.form-actions:has(#cancel-button:not([hidden])){flex-wrap:wrap}.form-actions:has(#cancel-button:not([hidden])) p{flex-basis:100%}}
@media(prefers-reduced-motion:reduce){:root{--ease:linear;--spring:linear}.card-stack,.preset-card,button,.progress-track>span,dialog[open]{transition:opacity 100ms linear,background-color 100ms linear,color 100ms linear}.card-stack{transform:none}.preset-card:active:not(:disabled),button:active:not(:disabled){transform:none}.card-shadow{transform:none}@media(hover:hover) and (pointer:fine){button:hover:not(:disabled),.preset-card:hover:not(:disabled){transform:none}}}
.progress-track{position:relative}.progress[data-waiting=true] .progress-track:after{content:"";position:absolute;inset:0 auto 0 0;width:24%;border-radius:8px;background:var(--accent);opacity:.18;animation:waiting 1600ms linear infinite}.progress[data-offscreen=true] .progress-track:after{animation-play-state:paused}@keyframes waiting{from{transform:translateX(-100%)}to{transform:translateX(520%)}}@media(prefers-reduced-motion:reduce){.progress .progress-track:after{animation-play-state:paused!important}}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}.input-heading{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:16px}.input-heading #input-title{margin:0}.mode-control{display:flex;align-items:center;gap:4px;color:var(--muted);font-size:14px}.mode-switch{position:relative;width:64px;height:44px;flex-shrink:0;border:0;background:transparent;border-radius:14px;padding:0}.mode-switch:before{content:"";position:absolute;inset:8px 6px;border-radius:18px;background:hsl(30 10% 78%);border:1px solid hsl(30 8% 67%);box-shadow:inset 0 2px 4px #3a2c1e35,inset 0 -1px 0 #fff9,0 1px 0 #fff;transition:background-color 180ms var(--ease)}.switch-knob{position:absolute;top:10px;left:8px;width:24px;height:24px;display:flex;align-items:center;justify-content:center;gap:2px;border:1px solid #fff;border-bottom-color:hsl(30 12% 70%);border-radius:50%;background:linear-gradient(155deg,#fff,hsl(35 17% 88%));box-shadow:inset 0 1px 1px #fff,0 2px 2px #2f231f33,0 3px 5px #2f231f24;transition:transform 420ms var(--spring)}.switch-knob i{height:7px;width:1px;background:hsl(30 8% 61%);box-shadow:1px 0 0 #fff9}.mode-switch[aria-checked=true]:before{background:var(--accent);border-color:var(--accent-dark)}.mode-switch[aria-checked=true] .switch-knob{transform:translateX(24px)}.otp-fieldset{border:0;margin:0;padding:0;min-width:0}.otp-grid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:10px}.code-slot{width:100%;min-width:0;height:72px;padding:0;border-radius:12px;border:1px solid hsl(30 8% 70%);border-top-color:hsl(30 8% 65%);background:var(--well);box-shadow:inset 0 2px 4px #36271012,0 1px 0 white;text-align:center;font:600 30px/1 ui-monospace,Consolas,monospace;color:var(--ink);caret-color:var(--accent);transition:border-color 160ms var(--ease),background-color 160ms var(--ease)}.code-slot::placeholder{font-weight:400;color:hsl(30 7% 61%)}.code-slot:focus{outline:2px solid var(--accent);outline-offset:2px;border-color:var(--accent);background:#fff}.code-slot:not(:placeholder-shown){background:var(--paper);border-color:hsl(30 8% 65%)}.code-slot:disabled{opacity:.6;cursor:wait}.mode-control:has(.mode-switch[aria-checked=true]){color:var(--accent)}@media(max-width:600px){.otp-grid{gap:8px}.code-slot{height:60px;font-size:28px}}@media(prefers-reduced-motion:reduce){.switch-knob{transition:none}}
.card-stack{width:calc(100% - 48px)}
/* The camera sits behind the input surface; only its head peeks above it. */
.input-stage{position:relative;isolation:isolate;margin-top:32px}.input-stage .input-panel{position:relative;z-index:1;margin-top:0}.camera-peek{position:absolute;right:24px;top:-112px;width:132px;height:128px;overflow:hidden;z-index:-1;pointer-events:none}.camera-peek img{display:block;width:100%;height:auto;filter:drop-shadow(0 4px 3px #201a1724)}
.code-cell{position:relative;min-width:0;overflow:hidden;border-radius:12px;padding:4px;margin:-4px}.code-cell .code-slot{color:transparent;-webkit-text-fill-color:transparent}.code-cell .code-slot::placeholder{-webkit-text-fill-color:hsl(30 7% 61%)}.code-glyph{position:absolute;inset:4px;display:grid;place-items:center;pointer-events:none;font:600 30px/1 ui-monospace,Consolas,monospace;color:var(--ink);transform-origin:50% 65%}.code-cell:has(input:disabled) .code-glyph{opacity:.65}
.has-started .studio{grid-template-columns:1fr;padding-block:32px}.has-started .tool-column{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,560px);column-gap:64px;align-items:center;max-width:none;width:100%}.has-started .hero-copy{grid-column:1;grid-row:1}.has-started h1{font-size:48px}.has-started .hero-intro{font-size:18px;max-width:320px}.has-started .input-stage{grid-column:2;grid-row:1;margin-top:64px}.has-started .last-status{grid-column:2}.has-started .results-area{padding-top:24px}
/* Grading comes first; each control has a zero point and a signed direction. */
#summary-panel .grade-heading{margin-top:0;margin-bottom:8px}.grade-name{display:flex;align-items:center;gap:10px}.grade-name svg{width:22px;height:22px;flex-shrink:0;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round;color:hsl(28 10% 43%)}.grade-track{position:relative;grid-column:1/-1;height:6px;border-radius:8px;background:hsl(35 16% 89%);margin:6px 0 7px;box-shadow:inset 0 1px 2px #36271012}.grade-track:after{content:"";position:absolute;left:var(--origin);top:-3px;width:2px;height:12px;background:hsl(28 9% 53%);transform:translateX(-1px);border-radius:2px}.grade-fill{position:absolute;height:100%;border-radius:8px;background:var(--accent)}.grade-track[data-direction=negative] .grade-fill{background:var(--blue)}.grade-guide{font-size:14px;margin-top:12px;line-height:1.7}.settings-grid{margin-top:28px;padding-top:24px;border-top:1px solid var(--line)}
/* A small paper calendar gives expiry a readable place of its own. */
.preset-expiry{display:flex;align-items:center;gap:14px;margin-top:20px}.calendar-page{position:relative;display:flex;flex-direction:column;width:58px;border:1px solid hsl(28 12% 78%);border-radius:9px;background:var(--paper);box-shadow:0 2px 0 hsl(30 15% 83%),0 5px 9px #45322312;overflow:visible;text-align:center;flex-shrink:0}.calendar-page:before,.calendar-page:after{content:"";position:absolute;top:-4px;width:3px;height:8px;border-radius:2px;background:hsl(28 8% 46%);box-shadow:1px 0 0 #fff7}.calendar-page:before{left:12px}.calendar-page:after{right:12px}.calendar-month{border-radius:8px 8px 0 0;background:var(--accent);color:white;font-size:14px;line-height:24px}.calendar-day{font-size:24px;line-height:34px;font-variant-numeric:tabular-nums}.expiry-copy{display:flex;flex-direction:column;gap:2px}.expiry-copy>b{font-size:16px;font-weight:650}.expiry-copy>span{font-size:14px;color:var(--muted)}.preset-expiry[data-expired=true] .expiry-copy>b{color:var(--error)}
@media(max-width:1100px){.has-started .tool-column{column-gap:40px;grid-template-columns:minmax(0,1fr) minmax(0,1.3fr)}.has-started h1{font-size:40px}}
@media(max-width:900px){.has-started .tool-column{display:block;max-width:600px;margin:auto}.has-started .studio{padding-block:24px 32px}.has-started .input-stage,.input-stage{margin-top:28px}.has-started .hero-intro{max-width:calc(100% - 140px)}.hero-intro{max-width:calc(100% - 140px)}.camera-peek{top:-96px;width:116px;height:112px;right:24px}.has-started h1{font-size:48px}}
@media(max-width:600px){.code-glyph{font-size:28px}}
@media(max-width:440px){.camera-peek{top:-84px;width:100px;height:100px;right:16px}.hero-intro,.has-started .hero-intro{max-width:calc(100% - 120px);font-size:16px}.has-started h1{font-size:40px}.grade-name{gap:7px}.grade-name svg{width:20px;height:20px}.grading-grid{column-gap:20px}.grade-row{font-size:16px}.grade-value{font-size:15px}.grade-guide{font-size:14px}.preset-expiry{margin-top:16px}}
