@import url('../art/characters/harei/ui/theme.css');
@import url('../art/characters/taffy-ui/theme.css');
/* Shared pop-halftone theme for the select screen and the arena.
   Character palettes are switched with body[data-theme]. */
@font-face{font-family:'Smiley';src:url('assets/fonts/SmileySans-Oblique.woff2') format('woff2');font-display:swap}

:root{
  color-scheme:dark;
  /* Muted, flat palette: ink + paper, one quiet accent per fighter, amber/red only for warnings. */
  --ink:#111214;--ink-2:#1a1b1f;--ink-3:#26272c;--paper:#ecebe6;--muted:#9a9ba3;--line:rgba(236,235,230,.22);
  --hot:#e9b949;--alert:#e5533d;--pink:#d98aa8;--cyan:#8fb9d4;--mint:#86d3b8;--red:#e06a5c;
  --c1:var(--mint);--c2:var(--pink);--c3:var(--hot);--c1-deep:#2f5f52;--on-c1:var(--ink);--bg-tint:#13201d;
  --display:'Smiley','PingFang SC','Microsoft YaHei',sans-serif;
  --body:system-ui,-apple-system,'PingFang SC','Microsoft YaHei','Noto Sans SC',sans-serif;
  --label:600 10px/1.2 var(--body);
  --cut:none;--cut-sm:none;
  --dots:radial-gradient(circle,currentColor 32%,transparent 34%);
}
:is(body,.preview-panel)[data-theme=hazel]{--c1:#86d3b8;--c2:#d98aa8;--c3:#e9b949;--c1-deep:#2f5f52;--c1-ink:#13201d;--bg-tint:#13201d;--on-c1:var(--ink)}
:is(body,.preview-panel)[data-theme=viridis]{--c1:#a7c77a;--c2:#d6b76d;--c3:#d99bb9;--c1-deep:#465f32;--c1-ink:#172013;--bg-tint:#172013;--on-c1:var(--ink)}
:is(body,.preview-panel)[data-theme=komichi]{--c1:#e06a5c;--c2:#e9b949;--c3:#8fb9d4;--c1-deep:#6b2b25;--c1-ink:#201514;--bg-tint:#201514;--on-c1:var(--ink)}
/* New four: hues taken from each fighter's model (Hinome orange/blue, Kanon pink/lavender,
   Nana7mi sea blue with reef coral, Shiori otter caramel with her aqua accent). */
:is(body,.preview-panel)[data-theme=hinome]{--c1:#f08a45;--c2:#f2c45c;--c3:#4f78c8;--c1-deep:#6e3516;--c1-ink:#21160f;--bg-tint:#21160f;--on-c1:var(--ink)}
:is(body,.preview-panel)[data-theme=kanon]{--c1:#e6a3cf;--c2:#a48ad9;--c3:#f4e2a6;--c1-deep:#62385a;--c1-ink:#1d1520;--bg-tint:#1d1520;--on-c1:var(--ink)}
:is(body,.preview-panel)[data-theme=nana7mi]{--c1:#5cc4ea;--c2:#ef8f7a;--c3:#e6eef6;--c1-deep:#1d4f63;--c1-ink:#0e1a22;--bg-tint:#0e1a22;--on-c1:var(--ink)}
:is(body,.preview-panel)[data-theme=shiori]{--c1:#dba46e;--c2:#48b9f0;--c3:#f5d958;--c1-deep:#62421f;--c1-ink:#1f1811;--bg-tint:#1f1811;--on-c1:var(--ink)}

*,*::before,*::after{box-sizing:border-box}
html,body{margin:0;height:100%}
body{background:var(--ink);color:var(--paper);font:14px/1.5 var(--body);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent}
button,select,input{font:inherit;color:inherit}
button{cursor:pointer}
button:disabled{cursor:not-allowed}
[hidden]{display:none!important}
a{color:inherit}
kbd{font:600 .92em/1 var(--body);display:inline-block;min-width:1.7em;padding:.22em .4em;margin:0 .12em;text-align:center;color:var(--paper);background:none;border:1px solid var(--line);border-bottom-width:2px}

/* Display type: oblique heavy face, used only for titles and numbers. */
.display{font-family:var(--display);font-weight:400;letter-spacing:.01em}

/* Halftone helpers: a dot field whose density fades along a gradient mask. */
.halftone{position:absolute;inset:0;pointer-events:none;color:var(--c1);background:var(--dots) 0 0/12px 12px;
  -webkit-mask-image:linear-gradient(135deg,#000 0%,transparent 70%);mask-image:linear-gradient(135deg,#000 0%,transparent 70%)}

/* Buttons */
.btn{--bg:transparent;--fg:var(--paper);display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:40px;padding:0 18px;border:1.5px solid var(--line);
  background:var(--bg);color:var(--fg);font-weight:700;letter-spacing:.06em;transition:background .12s,border-color .12s,color .12s;position:relative}
.btn:hover:not(:disabled){border-color:var(--paper)}
.btn:active:not(:disabled){transform:translateY(1px)}
.btn:disabled{opacity:.45}
.btn-hot{--bg:var(--paper);--fg:var(--ink);border-color:var(--paper)}
.btn-c1{--bg:transparent;--fg:var(--paper);border-color:var(--c1);box-shadow:inset 3px 0 0 var(--c1)}
.btn-ghost{--bg:rgba(17,18,20,.6)}
.btn[aria-pressed=true]{--bg:var(--paper);--fg:var(--ink);border-color:var(--paper)}

select.pop-select{appearance:none;-webkit-appearance:none;border:1.5px solid var(--line);border-radius:0;background:var(--ink) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 10 6'%3E%3Cpath d='M0 0h10L5 6z' fill='%23ecebe6'/%3E%3C/svg%3E") no-repeat right 10px center/9px 5px;
  padding:0 30px 0 12px;min-height:36px;font-weight:600}
select.pop-select:hover{border-color:var(--paper)}
select.pop-select option{background:var(--ink-2);color:var(--paper)}

/* Gamepad focus ring stays high-contrast on every background. */
body.gamepad-navigation :focus{outline:2px solid var(--paper)!important;outline-offset:3px}
:focus-visible{outline:2px solid var(--paper);outline-offset:2px}

/* Move guide (rendered by move-guide.js) */
.move-guide{font-size:12.5px;line-height:1.6;color:var(--muted)}
.move-guide .guide-intro{display:grid;gap:4px;margin-bottom:6px}
.move-guide .guide-caption,.move-guide .guide-note,.move-guide .guide-footnote{margin:0;font-size:11.5px;color:var(--muted)}
.move-guide .guide-footnote{margin-top:10px}
.move-guide .guide-toggle{justify-self:start;margin-top:6px;border:1.5px solid var(--line);background:transparent;color:var(--paper);padding:5px 12px;font-size:12px;font-weight:600}
.move-guide .guide-heading{display:flex;align-items:center;gap:10px;font:700 11px/1 var(--body);letter-spacing:.2em;color:var(--paper);margin:18px 0 8px}
.move-guide .guide-heading::after{content:"";flex:1;height:1px;background:var(--line)}
.move-guide .guide-list{list-style:none;padding:0;margin:0;display:grid;gap:5px}
.move-guide details{background:var(--ink-2);border-left:2px solid var(--c1);overflow:hidden}
.move-guide details[open]{background:var(--ink-3)}
.move-guide summary{display:grid;grid-template-columns:auto 1fr;grid-template-areas:"title input" "brief brief";gap:2px 10px;padding:8px 10px;cursor:pointer;list-style:none}
.move-guide summary::-webkit-details-marker{display:none}
.move-guide summary:hover{background:rgba(255,255,255,.05)}
.move-guide .guide-title{grid-area:title;font-weight:800;color:var(--paper)}
.move-guide .guide-input{grid-area:input;justify-self:end;align-self:center;font:600 11px/1.3 var(--body);color:var(--paper);background:none;border:1px solid var(--line);padding:1px 6px;border-radius:0;box-shadow:none;text-align:right}
.move-guide .guide-brief{grid-area:brief;font-size:11.5px;color:var(--muted)}
.move-guide .guide-body{padding:0 12px 10px}
.move-guide .guide-effect{margin:4px 0;font-size:11.5px;color:#d6d4df}

/* Loading works in either orientation; prompt for landscape only once it finishes. */
.rotate-hint{display:none;position:fixed;inset:0;z-index:1000;background:var(--ink);color:var(--paper);align-items:center;justify-content:center;text-align:center;padding:24px;touch-action:none;overflow:auto;overscroll-behavior:contain}
.rotate-card{position:relative;display:flex;flex-direction:column;align-items:center;width:min(100%,360px);padding:30px 18px 34px;border:1px solid var(--line);border-top:3px solid var(--c1);background:radial-gradient(circle,rgba(236,235,230,.07) 1px,transparent 1.5px) 0 0/9px 9px,var(--ink-2);box-shadow:8px 8px 0 rgba(0,0,0,.25)}
.rotate-card small{font:700 10px/1.4 var(--body);letter-spacing:.16em;color:var(--muted)}
.rotate-illustration{display:block;width:min(240px,90%);height:auto;margin:18px 0 12px;overflow:visible}
.rotate-orbit{fill:none;stroke:var(--line);stroke-width:1;stroke-dasharray:2 7}
.rotate-destination{fill:none;stroke:var(--c1);stroke-width:2;stroke-dasharray:5 5;opacity:.3}
.rotate-arrow{fill:none;stroke:var(--c1);stroke-width:4;stroke-linecap:round;stroke-linejoin:round}
.rotate-device{transform-box:view-box;transform-origin:120px 100px;animation:rotate-phone 2.6s cubic-bezier(.6,0,.3,1) infinite}
.rotate-shell{fill:var(--ink);stroke:var(--paper);stroke-width:3}
.rotate-screen{fill:var(--c1);opacity:.2}
.rotate-speaker{fill:none;stroke:var(--paper);stroke-width:3;stroke-linecap:round}
.rotate-screen-mark{fill:none;stroke:var(--c1);stroke-width:3;stroke-linecap:round}
.rotate-hint strong{font:400 clamp(27px,8vw,36px)/1.2 var(--display);text-shadow:2px 2px 0 var(--c1-deep)}
.rotate-hint span{margin-top:13px;font:600 13px/1.6 var(--body);color:var(--muted)}
.rotate-actions{display:flex;flex-direction:column;gap:12px;width:100%;margin-top:24px}
.rotate-actions button{min-height:44px;padding:10px 16px;font:700 17px var(--body);border:2px solid var(--paper);color:var(--ink);background:var(--paper);box-shadow:4px 4px 0 var(--red);cursor:pointer;touch-action:manipulation}
.rotate-actions .rotate-portrait{font-size:13px;color:var(--paper);background:transparent;border-color:var(--line);box-shadow:none}
/* Long presses belong to game controls. Keep deliberate text entry/copy usable. */
@media (pointer:coarse){
  body{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}
  :is(input,textarea,[contenteditable="true"],#current-code,#feedback-text,#result-share-image){-webkit-user-select:text;user-select:text;-webkit-touch-callout:default}
}
@keyframes rotate-phone{0%,15%{transform:rotate(0)}60%,85%{transform:rotate(90deg)}100%{transform:rotate(0)}}
@media (orientation:portrait){
  html.landscape-game:not(.portrait-allowed),html.landscape-game:not(.portrait-allowed) body{width:100%;max-width:100%;overflow:hidden}
  .rotate-hint{width:100vw;height:100vh;height:100dvh}
  html.landscape-game:not(.portrait-allowed) body:not(.boot-pending) .rotate-hint{display:flex}
}
@media (prefers-reduced-motion:reduce){.rotate-device{animation:none;transform:rotate(90deg)}}

@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}

:is(body,.preview-panel)[data-theme=michiya]{--c1:#83baff;--c2:#cfb77a;--c3:#e5e7ee;--c1-deep:#354c78;--c1-ink:#131a2b;--bg-tint:#131a2b;--on-c1:var(--ink)}

/* Azuma: silver hair, lavender flowers, ink-violet outfit. */
:is(body,.preview-panel)[data-theme=azuma]{--c1:#b9b1df;--c2:#ddd0a7;--c3:#eeeaf7;--c1-deep:#56517a;--c1-ink:#1b1828;--bg-tint:#1b1828;--on-c1:#211d31}

