:root{--paper: #ece2cc;--paper-deep: #e3d7bb;--card: #f3ecda;--card-edge: #d4c4a0;--ink: #211d18;--ink-soft: #6f6655;--ink-faint: #9a8f78;--vermilion: #cf3a23;--vermilion-deep: #a82c18;--ultramarine: #28407e;--gilt: #ad8736;--gilt-light: #cfa84e;--canvas-white: #fbf8f0;--shadow-sm: 0 2px 0 rgba(33, 29, 24, .08);--shadow-frame: 0 18px 40px -16px rgba(33, 29, 24, .55), 0 4px 12px -6px rgba(33, 29, 24, .4);--font-display: "Fraunces", Georgia, serif;--font-ui: "Archivo", system-ui, sans-serif;--font-mono: "Spline Sans Mono", ui-monospace, monospace}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:var(--font-ui);color:var(--ink);background-color:var(--paper);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}body:before{content:"";position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:0;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.5'/%3E%3C/svg%3E");opacity:.05;mix-blend-mode:multiply}body:after{content:"";position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:0;background:radial-gradient(120% 90% at 50% 0%,transparent 55%,rgba(33,29,24,.14) 100%)}.app{position:relative;z-index:1;min-height:100%;display:flex;flex-direction:column;align-items:center}.banner{width:100%;text-align:center;padding:7px;font-family:var(--font-mono);font-size:12px;letter-spacing:.18em;text-transform:uppercase}.banner.warn{background:var(--vermilion);color:var(--card)}.screen{width:100%;max-width:1120px;padding:32px 22px 72px;animation:rise .6s cubic-bezier(.2,.8,.2,1) both}@keyframes rise{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}.eyebrow{font-family:var(--font-mono);font-size:11px;letter-spacing:.34em;text-transform:uppercase;color:var(--vermilion)}.panel-label{display:block;font-family:var(--font-mono);font-size:10.5px;letter-spacing:.26em;text-transform:uppercase;color:var(--ink-soft);margin-bottom:10px}.stamp{font-family:var(--font-mono);text-transform:uppercase;text-align:center;color:var(--vermilion);border:2.5px solid var(--vermilion);box-shadow:0 0 0 1.5px var(--vermilion) inset;border-radius:50%;display:grid;place-content:center;line-height:1.25;transform:rotate(-11deg);mix-blend-mode:multiply;opacity:.86}.stamp .s-big{font-weight:700;letter-spacing:.12em}.stamp .s-small{font-size:.62em;letter-spacing:.2em;color:var(--vermilion-deep)}button{font:inherit;cursor:pointer}.primary,.secondary,.ghost{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.16em;font-size:13px;font-weight:600;border:1.5px solid var(--ink);border-radius:2px;padding:13px 18px;transition:transform .08s ease,background .2s ease,color .2s ease,box-shadow .2s ease}.primary{background:var(--vermilion);color:var(--card);border-color:var(--vermilion-deep);box-shadow:4px 4px 0 var(--ink)}.primary:hover:not(:disabled){background:var(--vermilion-deep)}.primary:active:not(:disabled){transform:translate(2px,2px);box-shadow:2px 2px 0 var(--ink)}.secondary{background:var(--ink);color:var(--card)}.secondary:hover:not(:disabled){background:#322c24}.ghost{background:transparent;color:var(--ink-soft);border:1.5px solid var(--card-edge);box-shadow:none}.ghost:hover:not(:disabled){color:var(--ink);border-color:var(--ink)}.ghost.on,.ghost.active{color:var(--vermilion);border-color:var(--vermilion)}button:disabled{opacity:.35;cursor:not-allowed;box-shadow:none}.big{padding:16px 22px;font-size:14px}input{font-family:var(--font-ui);background:var(--canvas-white);border:1.5px solid var(--card-edge);color:var(--ink);border-radius:2px;padding:13px 14px;outline:none;transition:border-color .2s ease}input::placeholder{color:var(--ink-faint)}input:focus{border-color:var(--vermilion)}input[type=range]{padding:0;accent-color:var(--vermilion);background:transparent;border:none}.field{display:flex;flex-direction:column;gap:8px}.field>span{font-family:var(--font-mono);font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--ink-soft)}.card{position:relative;background:var(--card);border:1.5px solid var(--card-edge);box-shadow:var(--shadow-sm);padding:24px;display:flex;flex-direction:column;gap:16px}.card:after{content:"";position:absolute;top:5px;right:5px;bottom:5px;left:5px;border:1px solid var(--card-edge);pointer-events:none}.card h2{margin:0;font-family:var(--font-display);font-optical-sizing:auto;font-weight:560;font-size:22px;letter-spacing:-.01em}.hint{color:var(--ink-soft);font-size:14px;margin:0;line-height:1.5}.hint.center{text-align:center}.hint.warn{color:var(--vermilion);font-family:var(--font-mono);font-size:12px;letter-spacing:.1em;text-transform:uppercase}.hint.err{color:var(--vermilion-deep);cursor:pointer;font-weight:600}.home{max-width:560px;display:flex;flex-direction:column;gap:26px;padding-top:7vh}.home .brand{position:relative}.brand .eyebrow{display:block;margin-bottom:10px}.brand h1{font-family:var(--font-display);font-optical-sizing:auto;font-weight:600;font-size:clamp(54px,11vw,96px);line-height:.9;letter-spacing:-.03em;margin:0;color:var(--ink)}.brand h1 .sloppy{display:block;font-style:italic;font-weight:340;color:var(--vermilion);font-variation-settings:"SOFT" 60,"WONK" 1}.brand .tag{margin:18px 0 0;font-family:var(--font-display);font-style:italic;font-size:19px;color:var(--ink-soft)}.home .brand .stamp{position:absolute;top:-14px;right:-2px;width:104px;height:104px;font-size:13px}.divider{display:flex;align-items:center;gap:14px;color:var(--ink-faint)}.divider span{font-family:var(--font-mono);font-size:11px;letter-spacing:.22em;text-transform:uppercase}.divider:before,.divider:after{content:"";flex:1;height:1px;background:var(--card-edge)}.join-row{display:flex;gap:12px}.code-input{flex:1;text-align:center;font-family:var(--font-mono);letter-spacing:.5em;text-indent:.5em;font-size:24px;font-weight:600;text-transform:uppercase;color:var(--ultramarine)}.footnote{border-left:2px solid var(--vermilion);padding-left:16px;color:var(--ink-soft);font-size:14px;line-height:1.65}.footnote em{font-family:var(--font-display);font-style:italic;color:var(--ink)}.lobby{max-width:600px;display:flex;flex-direction:column;gap:20px}.code-banner{position:relative;display:flex;align-items:center;gap:16px;background:var(--ink);color:var(--card);padding:22px 26px;border-radius:2px;overflow:hidden}.code-banner:after{content:"EXHIBIT";position:absolute;right:-10px;bottom:-22px;font-family:var(--font-display);font-style:italic;font-size:84px;color:#f3ecda0f;pointer-events:none}.code-label{font-family:var(--font-mono);font-size:11px;letter-spacing:.24em;text-transform:uppercase;color:var(--gilt-light);writing-mode:vertical-rl;transform:rotate(180deg)}.code-big{font-family:var(--font-mono);font-size:clamp(44px,12vw,68px);font-weight:700;letter-spacing:.16em;color:var(--card);margin-right:auto;z-index:1}.code-banner .ghost{color:var(--card);border-color:#f3ecda4d;z-index:1}.code-banner .ghost:hover{color:var(--ink);background:var(--card);border-color:var(--card)}.player-list{list-style:none;margin:0;padding:0;counter-reset:artist;display:flex;flex-direction:column}.player-list li{counter-increment:artist;display:flex;align-items:center;gap:14px;padding:13px 6px;border-bottom:1px solid var(--card-edge);font-size:16px}.player-list li:before{content:counter(artist,decimal-leading-zero);font-family:var(--font-mono);font-size:12px;color:var(--ink-faint);letter-spacing:.1em}.player-list li.offline{opacity:.4}.dot{width:8px;height:8px;border-radius:50%;background:var(--vermilion);box-shadow:0 0 0 3px #cf3a232e}.offline .dot{background:var(--ink-faint);box-shadow:none}.badge{font-family:var(--font-mono);font-size:9.5px;letter-spacing:.16em;text-transform:uppercase;padding:3px 8px;border:1px solid var(--card-edge);color:var(--ink-soft)}.badge.you{background:var(--vermilion);color:var(--card);border-color:var(--vermilion)}.round-head{display:flex;align-items:baseline;gap:18px;flex-wrap:wrap;padding-bottom:14px;margin-bottom:18px;border-bottom:2px solid var(--ink)}.round-meta{font-family:var(--font-mono);font-size:12px;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-soft)}.round-meta strong{color:var(--vermilion);font-size:14px}.round-title{font-family:var(--font-display);font-style:italic;font-size:18px;color:var(--ink)}.round-title em{font-style:italic;font-weight:560}.timer{margin-left:auto;font-family:var(--font-mono);font-size:34px;font-weight:700;font-variant-numeric:tabular-nums;letter-spacing:.02em;color:var(--ink)}.timer.low{color:var(--vermilion);animation:pulse 1s steps(2) infinite}@keyframes pulse{50%{opacity:.5}}.studio{display:grid;grid-template-columns:1fr auto 220px;gap:20px;align-items:start}.reference{display:flex;flex-direction:column}.ref-frame{background:var(--canvas-white);padding:12px;border:1px solid var(--card-edge);box-shadow:var(--shadow-frame)}.ref-img{width:100%;aspect-ratio:1;object-fit:cover;display:block;cursor:zoom-in}.ref-img.placeholder{display:grid;place-items:center;color:var(--ink-soft);background:var(--paper-deep);text-align:center;font-size:13px;aspect-ratio:1}.ref-placard{margin-top:14px;padding-top:12px;border-top:1px solid var(--card-edge)}.ref-placard .pl-title{font-family:var(--font-display);font-weight:600;font-size:17px;line-height:1.15}.ref-placard .pl-artist{font-family:var(--font-display);font-style:italic;color:var(--ink-soft);font-size:14px;margin-top:2px}.ref-placard .pl-meta{font-family:var(--font-mono);font-size:10px;letter-spacing:.18em;text-transform:uppercase;color:var(--ink-faint);margin-top:8px}.easel{position:relative}.canvas-wrap{position:relative;width:min(560px,68vw)}.paint-canvas{width:100%;aspect-ratio:1;background:#fff;display:block;border:14px solid #2a241c;border-radius:1px;box-shadow:0 0 0 2px var(--gilt) inset,0 0 0 16px #1c1813,var(--shadow-frame)}.canvas-grid{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;background-image:linear-gradient(rgba(40,64,126,.16) 1px,transparent 1px),linear-gradient(90deg,rgba(40,64,126,.16) 1px,transparent 1px);background-size:25% 25%;background-position:center;margin:14px}.time-up{position:absolute;top:14px;right:14px;bottom:14px;left:14px;display:grid;place-items:center;background:#1c1813b8;color:var(--card);font-family:var(--font-display);font-style:italic;font-size:24px;text-align:center;padding:20px}.scoreboard{background:var(--card);border:1.5px solid var(--card-edge);padding:16px}.scoreboard .my-score{font-family:var(--font-mono);font-size:40px;font-weight:700;color:var(--vermilion);line-height:1;margin-bottom:14px;font-variant-numeric:tabular-nums}.scoreboard ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}.scoreboard li{display:flex;justify-content:space-between;align-items:baseline;gap:8px;padding:8px 0;border-top:1px solid var(--card-edge);font-size:14px}.scoreboard li.me .nm{color:var(--vermilion);font-weight:700}.scoreboard .nm{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.scoreboard .pct{font-family:var(--font-mono);font-variant-numeric:tabular-nums;color:var(--ink);font-weight:600}.rivals{margin-top:18px;padding:16px 20px;background:var(--card);border:1.5px solid var(--card-edge)}.rivals .panel-label{display:block;margin-bottom:12px}.rivals-empty{font-size:14px;color:var(--ink-soft, #8a7f6f)}.rivals-row{display:flex;flex-wrap:wrap;gap:18px}.rival{margin:0;display:flex;flex-direction:column;gap:8px}.rival-canvas{width:150px;height:150px;border:1.5px solid var(--card-edge);background:#fff;box-shadow:0 2px 8px #0000000f}.rival-cap{display:flex;justify-content:space-between;align-items:baseline;gap:10px;font-size:14px}.rival-cap .nm{max-width:110px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600}.rival-cap .pct{font-family:var(--font-mono);font-variant-numeric:tabular-nums;color:var(--vermilion);font-weight:700}.toolbar{display:flex;align-items:center;gap:26px;margin-top:22px;flex-wrap:wrap;justify-content:center;padding:16px 20px;background:var(--card);border:1.5px solid var(--card-edge)}.palette{display:flex;gap:8px}.swatch{width:42px;height:42px;border:2px solid var(--ink);border-radius:50%;padding:0;cursor:pointer;box-shadow:var(--shadow-sm);transition:transform .1s ease}.swatch.active{transform:scale(1.16);box-shadow:0 0 0 2px var(--paper),0 0 0 4px var(--vermilion)}.brushes{display:flex;gap:8px}.brush{width:46px;height:46px;background:var(--canvas-white);border:1.5px solid var(--card-edge);border-radius:2px;display:grid;place-items:center;cursor:pointer}.brush.active{border-color:var(--vermilion);background:#fff}.brush span{background:var(--ink);border-radius:50%;display:block}.ref-zoom{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;background:#14110deb;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;padding:20px;cursor:zoom-out;animation:rise .2s ease both}.ref-zoom img{max-width:min(92vw,92vh);max-height:82vh;width:auto;object-fit:contain;border:8px solid #2a241c;box-shadow:0 0 0 2px var(--gilt) inset,var(--shadow-frame)}.ref-zoom-hint{font-family:var(--font-mono);font-size:11px;letter-spacing:.22em;text-transform:uppercase;color:var(--gilt-light)}.reveal .round-head{border-bottom-color:var(--ink)}.gallery{display:flex;flex-wrap:wrap;gap:22px;justify-content:center;margin:10px 0 30px;counter-reset:lot}.gallery figure{counter-increment:lot;position:relative;margin:0;width:224px;background:var(--card);border:1px solid var(--card-edge);padding:12px 12px 14px;box-shadow:var(--shadow-sm)}.gallery figure img,.gallery figure .blank{width:100%;aspect-ratio:1;object-fit:cover;display:block;background:#fff;border:1px solid var(--card-edge)}.gallery .blank{display:grid;place-items:center;color:var(--ink-faint);font-family:var(--font-mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase}.gallery figcaption{display:flex;justify-content:space-between;align-items:baseline;gap:8px;margin-top:12px;padding-top:10px;border-top:1px solid var(--card-edge)}.gallery .nm{font-family:var(--font-display);font-size:15px;font-weight:560}.gallery .pct{font-family:var(--font-mono);font-weight:700;color:var(--vermilion);font-variant-numeric:tabular-nums}.gallery .original{width:250px;outline:2px solid var(--ink);outline-offset:4px}.gallery .original figcaption{justify-content:center}.gallery .original .o-cap{font-family:var(--font-display);font-style:italic;color:var(--ink-soft)}.gallery .winner{outline:2px solid var(--gilt);outline-offset:4px;box-shadow:var(--shadow-frame)}.gallery .winner:before{content:"BEST¯ORGERY";white-space:pre;position:absolute;top:-18px;right:-18px;width:76px;height:76px;display:grid;place-content:center;text-align:center;font-family:var(--font-mono);font-size:11px;font-weight:700;letter-spacing:.1em;line-height:1.2;color:var(--card);background:var(--gilt);border:2px solid var(--card);border-radius:50%;transform:rotate(12deg);box-shadow:0 6px 14px -4px #211d1880;z-index:2}.reveal-actions{text-align:center}.reveal-actions .big{min-width:280px}.results{max-width:560px;text-align:center;display:flex;flex-direction:column;gap:22px}.results .eyebrow{display:block}.champ{font-family:var(--font-display);font-weight:600;font-size:clamp(34px,7vw,52px);line-height:1;letter-spacing:-.02em;margin:6px 0 0}.champ em{font-style:italic;color:var(--vermilion)}.leaderboard{list-style:none;margin:0;padding:0;counter-reset:place;display:flex;flex-direction:column;gap:10px;text-align:left}.leaderboard li{counter-increment:place;display:flex;align-items:center;gap:16px;padding:16px 18px;background:var(--card);border:1.5px solid var(--card-edge)}.leaderboard li.first{border-color:var(--gilt);box-shadow:0 0 0 1px var(--gilt) inset}.leaderboard .rank{font-family:var(--font-mono);font-size:13px;font-weight:700;width:30px;color:var(--ink-soft)}.leaderboard li.first .rank{color:var(--gilt)}.leaderboard .nm{flex:1;font-family:var(--font-display);font-size:19px;font-weight:560}.leaderboard .score{font-family:var(--font-mono);font-weight:700;font-size:18px;color:var(--vermilion);font-variant-numeric:tabular-nums}@media(max-width:880px){.studio{grid-template-columns:1fr}.canvas-wrap{width:100%}.easel{order:1}.reference{order:2}.scoreboard{order:3}.home .brand .stamp{width:84px;height:84px;font-size:11px;top:-6px}}@media(max-width:600px){.screen{padding:18px 12px 28px}.home{padding-top:4vh;gap:20px}.home .brand .stamp{width:70px;height:70px;font-size:9.5px;top:-4px;right:0}.footnote{font-size:13px}.code-banner{padding:16px 18px;gap:12px}.code-label{display:none}.player-list li{font-size:15px}.round{padding-bottom:110px}.round-head{gap:8px 14px;padding-bottom:10px;margin-bottom:12px}.round-title{display:none}.timer{font-size:28px}.studio{gap:14px}.reference{order:1;flex-direction:row;flex-wrap:wrap;align-items:flex-start;gap:12px}.reference .panel-label{width:100%;margin-bottom:2px}.ref-frame{width:min(190px,46vw);padding:7px;box-shadow:var(--shadow-sm)}.ref-placard{flex:1;min-width:150px;margin-top:0;padding-top:0;border-top:none}.easel{order:2}.scoreboard{order:3}.paint-canvas{border-width:8px;box-shadow:0 0 0 2px var(--gilt) inset,0 0 0 9px #1c1813,var(--shadow-frame)}.canvas-grid{margin:8px}.time-up{top:8px;right:8px;bottom:8px;left:8px;font-size:20px}.scoreboard{padding:12px 14px}.scoreboard .my-score{font-size:32px;margin-bottom:10px}.toolbar{position:sticky;bottom:0;z-index:5;margin-top:16px;gap:12px 18px;padding:12px 14px;box-shadow:0 -6px 16px -8px #211d1880}.swatch{width:34px;height:34px;border-width:2px}.brush{width:40px;height:40px}.rivals{padding:14px 16px}.rivals-row{gap:14px;justify-content:center}.rival-canvas{width:120px;height:120px}.gallery{gap:16px}.gallery figure,.gallery .original{width:100%;max-width:320px}.leaderboard li{padding:14px;gap:12px}.leaderboard .nm{font-size:17px}}
