@charset "UTF-8";
/* ChunUI web tokens: CCColors, 13/17/24 type, 8/16 spacing, CCNeo chrome. */
:root {
  --primary:#b51e86; --primary-wash:#b51e8629; --foreground:#171717;
  --background:#f7f7f9; --card:#fff; --panel:#f7f7fa; --sidebar:#ebebf0;
  --muted:#6b6b6b; --border:#dedee5; --destructive:#ad3456;
  --sm:13px; --base:17px; --lg:24px; --space-sm:8px; --space:16px;
  --reveal:cubic-bezier(.22,.8,.36,1); --duration:320ms;
  --shadow:0 1px 3px #18181b05,0 12px 32px #18181b06;
  --ink:var(--foreground); --gel:#ff9c32; --gel-dark:#d76215;
  font-family:Inter,"Segoe UI","Microsoft YaHei",sans-serif;
  color:var(--foreground); background:var(--background); font-synthesis:none;
}
*{box-sizing:border-box}
body{margin:0;font-size:var(--base);line-height:1.5}
button,a{-webkit-tap-highlight-color:transparent}
button,a{touch-action:manipulation}
button{font:inherit;color:inherit;cursor:pointer;border:0}
button:disabled{cursor:default}
button:focus-visible,a:focus-visible,[tabindex]:focus-visible{outline:2px solid var(--primary);outline-offset:4px}
button:active:not(:disabled){transform:translateY(1px)}
a{color:inherit;text-decoration:none}
[hidden]{display:none!important}
.icon-definitions{position:absolute;width:0;height:0;overflow:hidden}
.mobile-only{display:none}
.header>.mobile-only{display:none}
.art-area,.stage-overlay{display:contents}
.shell{max-width:1344px;margin:auto;padding:0 32px}
.header{min-height:104px;display:flex;align-items:center;justify-content:space-between;gap:24px;border-bottom:.5px solid var(--border)}
.brand{display:flex;gap:12px;align-items:center}
.brand-icon{width:48px;height:48px;border-radius:18px;display:grid;place-items:center;background:var(--foreground);color:white;box-shadow:inset 0 1px 1px #ffffff55,0 2px 4px #18181b18}
.brand-icon svg{width:26px;height:26px}
.brand strong{font-size:var(--lg);font-weight:700;display:flex;align-items:baseline;gap:12px;letter-spacing:-.6px}
.brand-en{font-size:var(--sm);letter-spacing:1.5px;color:var(--muted)}
.brand small{display:block;font-size:var(--sm);color:var(--muted);margin-top:2px}
.mode-tabs{display:flex;min-height:56px;gap:4px;padding:5px;border-radius:21px;background:var(--sidebar);box-shadow:inset 0 1px 3px #18181b0c}
.mode-tabs button{border-radius:17px;background:transparent;padding:8px 20px;font-size:var(--sm);color:var(--muted);font-weight:600;white-space:nowrap;transition:background var(--duration) var(--reveal),color var(--duration) var(--reveal)}
.mode-tabs .active{color:var(--primary);background:linear-gradient(#ffffffb3,#ffffff70),var(--primary-wash);box-shadow:inset 0 1px 0 white,0 1px 3px #18181b12}
.header-actions{display:flex;gap:8px;align-items:center}
.best{font-size:var(--sm);color:var(--muted);margin-right:16px}
.best b{display:block;font-size:var(--base);font-variant-numeric:tabular-nums;color:var(--foreground)}
.icon-button{width:44px;height:44px;border:.5px solid var(--border);border-radius:50%;display:grid;place-items:center;background:linear-gradient(white,#f7f7fa);box-shadow:inset 0 1px 0 white,0 1px 2px #18181b05;font-size:var(--lg)}
@media(hover:hover){.icon-button:hover{background:var(--sidebar)}}
.icon-button svg{width:20px;height:20px}
.icon-button[aria-pressed="true"]{background:var(--sidebar);color:var(--muted)}
.workspace{display:grid;grid-template-columns:296px minmax(0,1fr);gap:32px;margin:32px 0}
.order-panel{min-width:0}
.order-panel h1{font-size:var(--lg);line-height:1.5;letter-spacing:-.5px;margin:0 0 8px;font-weight:700}
.intro{font-size:var(--sm);line-height:1.8;color:var(--muted);margin:0 0 24px}
.ticket{background:var(--card);border:.5px solid var(--border);border-radius:24px;padding:20px;box-shadow:var(--shadow)}
.ticket-top{font-size:var(--sm);color:var(--muted)}
.order-name{display:flex;gap:12px;align-items:center;margin:20px 0 16px}
.order-name h2{font-size:var(--base);line-height:1.45;margin:0}
#order-icon{width:48px;height:48px;flex-shrink:0}
.ticket-line{border-top:.5px solid var(--border);margin:16px 0}
.recipe{display:flex;justify-content:space-between;gap:12px;font-size:var(--sm);margin:12px 0}
.recipe>span{color:var(--muted)}
.recipe b{font-size:var(--sm);font-weight:600}
.ticket-note{font-size:var(--sm);color:var(--muted);line-height:1.6;margin:20px 0 0}
.session-stats{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin:24px 0}
.session-stats span{font-size:var(--sm);color:var(--muted);display:block;margin-bottom:4px}
.session-stats strong{font-size:var(--lg);font-weight:600;line-height:1.4;font-variant-numeric:tabular-nums;letter-spacing:1px}
#lives{font-size:var(--base);letter-spacing:2px;line-height:34px}
.primary-button,.pour-button{background:linear-gradient(#c13897,var(--primary));color:white;border:1px solid #991770;box-shadow:inset 0 1px 0 #ffffff66,0 1px 3px #18181b1a;font-size:var(--base);font-weight:600;display:flex;justify-content:center;align-items:center;transition:filter var(--duration) var(--reveal),opacity var(--duration) var(--reveal)}
.primary-button{min-height:52px;border-radius:20px;width:100%;gap:12px;padding:12px 16px}
@media(hover:hover){.primary-button:hover:not(:disabled),.pour-button:hover:not(:disabled){filter:brightness(1.06)}}
.primary-button:disabled,.pour-button:disabled{background:var(--sidebar);border-color:var(--border);box-shadow:inset 0 1px 0 #ffffff99;color:var(--muted);font-weight:500}
.panel-foot{display:flex;gap:8px;justify-content:space-between;align-items:center;font-size:var(--sm);color:var(--muted);margin-top:12px}
.panel-foot button{font-size:var(--sm);background:transparent;min-height:44px;padding:8px}
.panel-foot button:disabled{opacity:.45}
.lab-panel{border:.5px solid var(--border);border-radius:28px;background:var(--card);box-shadow:var(--shadow);overflow:hidden;display:flex;flex-direction:column;min-width:0}
.lab-top{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:16px 24px;border-bottom:.5px solid var(--border);font-size:var(--sm);color:var(--muted);min-height:56px}
.stage{flex:1;min-height:536px;position:relative;overflow:hidden;background:#faf9f7}
/* Keep the pipette, stream and paper in the same local coordinate system. */
.pour-zone{width:320px;height:330px;position:absolute;left:50%;top:64px;transform:translateX(-50%);touch-action:none;user-select:none;-webkit-user-select:none;cursor:grab}
.pour-zone:active{cursor:grabbing}
.pour-zone:focus-visible{outline-offset:8px;border-radius:24px}
.pipette{width:100px;height:194px;position:absolute;top:0;left:148px;z-index:4;transform:rotate(7deg);transform-origin:65% 90%;transition:transform var(--duration) var(--reveal)}
.pipette svg{width:100%;height:100%;overflow:visible}
.bulb{fill:var(--gel);stroke:var(--gel-dark);stroke-width:1.5}
.pipette-ink{fill:var(--gel);opacity:.8}
.dish{position:absolute;width:250px;height:220px;left:35px;top:133px}
.ball-wrap{width:220px;height:220px;position:absolute;left:15px;top:0;z-index:2;transform-origin:50% 78%}
.stage-message{position:absolute;bottom:92px;width:100%;padding:0 20px;text-align:center;font-size:var(--sm);color:var(--muted);z-index:5;line-height:1.6}
.meter-box{position:absolute;bottom:20px;left:50%;transform:translateX(-50%);width:calc(100% - 64px);max-width:480px;z-index:5}
.meter-title{font-size:var(--sm);display:flex;align-items:baseline;justify-content:space-between;color:var(--muted);margin-bottom:8px}
.meter-title b{font-size:var(--base);font-weight:600;color:var(--foreground);line-height:1;font-variant-numeric:tabular-nums}
.meter-title b span{font-size:var(--sm);margin-left:2px}
.meter-track{height:10px;background:#e1e1e7;border-radius:4px;position:relative;box-shadow:inset 0 1px 2px #18181b0a}
.meter-fill{position:absolute;left:0;top:2px;bottom:2px;width:0;background:var(--foreground);border-radius:3px;z-index:2}
.target-band{position:absolute;top:-4px;bottom:-4px;background:var(--primary-wash);border:1px solid var(--primary);border-radius:4px;z-index:1}
.target-line{position:absolute;top:-7px;bottom:-7px;border-left:2px solid var(--primary);z-index:3}
.meter-foot{display:flex;justify-content:space-between;gap:8px;margin-top:8px;font-size:var(--sm);color:var(--muted)}
.tools{display:flex;align-items:center;justify-content:space-between;gap:24px;padding:20px 24px;border-top:.5px solid var(--border);background:var(--card);min-height:112px}
.tool-label{display:block;font-size:var(--sm);color:var(--muted);margin-bottom:12px}
.palette{display:flex;gap:8px}
.swatch{width:36px;height:36px;border-radius:14px;background:var(--swatch);border:4px solid white;box-shadow:0 0 0 1px var(--border),inset 0 1px 2px #18181b10;position:relative;transition:box-shadow var(--duration) var(--reveal)}
@media(hover:hover){.swatch:hover:not(:disabled){box-shadow:0 0 0 2px #bcbcc6}}
.swatch-color,.swatch-label{display:none}
.swatch[aria-pressed="true"]{box-shadow:0 0 0 2px var(--primary)}
.swatch[aria-pressed="true"]::after{content:"✓";font-size:var(--sm);font-weight:700;position:absolute;inset:0;display:grid;place-items:center;color:#171717;text-shadow:0 1px 3px white}
.swatch:disabled{opacity:.55}
.pour-button{height:44px;border-radius:17px;gap:8px;padding:0 16px;touch-action:none;user-select:none;min-width:208px}
.pour-button svg{width:20px;height:20px}
kbd{font:inherit;font-size:var(--sm);font-weight:400;border:1px solid #ffffff66;border-radius:5px;padding:1px 5px}
.pour-button:disabled kbd{border-color:var(--border)}
.collection{border-top:.5px solid var(--border);padding:24px 0 32px}
.collection-heading{display:grid;grid-template-columns:1fr auto;align-items:center;gap:4px 24px;margin-bottom:20px}
.collection-heading h2{font-size:var(--base);margin:0;grid-column:1;display:flex;align-items:center;gap:12px}
.collection-heading h2 span{font-size:var(--sm);font-weight:500;color:var(--muted)}
.collection-heading p{grid-column:2;margin:0;font-size:var(--sm);color:var(--muted)}
.collection-grid{display:grid;grid-template-columns:repeat(9,minmax(0,1fr));gap:12px}
.collection-cell{background:var(--sidebar);border:1px solid var(--border);border-radius:20px;position:relative;padding:8px 8px 12px;min-width:0;transition:box-shadow var(--duration) var(--reveal),border-color var(--duration) var(--reveal)}
.collection-cell.current{border-color:var(--primary);box-shadow:0 0 0 2px var(--primary-wash)}
.collection-cell.filled{background:var(--card)}
@media(hover:hover){
  .collection-cell:hover:not(:disabled){border-color:#a1a1aa;box-shadow:0 4px 12px #18181b0a}
  .collection-cell.current:hover:not(:disabled){border-color:var(--primary)}
}
.cell-art{display:block;width:100%;aspect-ratio:1}
.cell-art svg{display:block;width:100%;height:100%;opacity:.6}
.collection-cell .cell-number{display:block;font-size:var(--sm);line-height:1.5;white-space:nowrap;text-align:center;color:var(--muted);margin-top:4px}
.cell-index{position:absolute;top:8px;left:10px;font-size:var(--sm);color:var(--muted)}
.collection-cell.current .cell-number{color:var(--primary)}
.collection-cell .perfect-star{position:absolute;top:8px;right:10px;color:var(--primary);font-size:var(--sm)}
footer{display:flex;justify-content:space-between;gap:16px;border-top:.5px solid var(--border);padding:20px 0 28px;font-size:var(--sm);color:var(--muted)}
