/* © 2026 All rights reserved. */
:root{--bg:#12103a;--win:#1c1a6e;--win2:#10104a;--line:#fff;--gold:#f8d84a;--red:#ff6a6a;--green:#6ae890;--ink:#f4f4ff;--dim:#a8a8d8;
  --font:"Hiragino Maru Gothic ProN","Hiragino Sans","Yu Gothic",system-ui,sans-serif}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;height:100%;position:fixed;inset:0;width:100%;overflow:hidden;background:var(--bg);color:var(--ink);font-family:var(--font);
  user-select:none;-webkit-user-select:none;overscroll-behavior:none;touch-action:manipulation;-webkit-font-smoothing:none;font-smooth:never}
button{font:inherit;color:inherit;cursor:pointer;touch-action:manipulation}
a{color:inherit}
canvas.px,#castle{image-rendering:pixelated;image-rendering:crisp-edges}
.screen[hidden]{display:none!important}

/* ---- 全体の配置: 縦=上から HUD / 城 / パネル、横=左に城、右に HUD とパネル */
.stage{height:100dvh;width:100%;max-width:640px;margin:0 auto;display:grid;grid-template-rows:auto minmax(0,42dvh) minmax(0,1fr);grid-template-columns:1fr;
  grid-template-areas:"hud" "castle" "panel";padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);position:relative;gap:6px}
.hud{grid-area:hud}.castleBox{grid-area:castle}.panel{grid-area:panel}
@media (orientation:landscape){
  .stage{max-width:none;grid-template-rows:auto minmax(0,1fr);grid-template-columns:minmax(0,46dvh) minmax(0,1fr);grid-template-areas:"castle hud" "castle panel";column-gap:10px;padding-left:max(8px,env(safe-area-inset-left))}
  .stage{max-width:900px}
}
.castleBox{display:flex;justify-content:center;align-items:stretch;min-height:0}
#castle{height:100%;max-width:100%;aspect-ratio:240/300;border:3px solid #fff;box-shadow:0 0 0 3px #000;background:#000;touch-action:none}
@media (orientation:landscape){#castle{height:auto;width:100%;max-height:100%;margin-top:6px}.castleBox{align-items:flex-start}}

/* ---- HUD */
.hud{display:grid;grid-template-columns:auto auto 1fr 1fr;gap:6px 10px;align-items:center;padding:6px 8px;background:var(--win);border:3px solid #fff;box-shadow:0 0 0 3px #000;margin:4px 4px 0;font-weight:900}
.hud small{font-size:10px;color:var(--dim)}
.hud b{font-size:16px}
.day b{font-size:22px;color:var(--gold);margin:0 2px}
.gold{display:flex;align-items:center;gap:3px}
.gold canvas{width:16px;height:16px}
.gauge{display:grid;grid-template-columns:1fr auto;grid-template-rows:auto auto;gap:1px 4px;min-width:0;font-size:10px}
.gauge span{grid-column:1 / -1;color:var(--dim);white-space:nowrap}
.bar{height:8px;background:#000;border:2px solid #fff;position:relative}
.bar i{display:block;height:100%;width:50%;background:var(--green);transition:width .4s steps(8)}
.bar.c i{background:#58a8ff}
.bar i.low{background:var(--red);animation:blink .5s infinite steps(2)}
@keyframes blink{50%{opacity:.35}}
@media (max-width:420px){.hud{grid-template-columns:auto auto;}.gauge{grid-column:span 1}}

/* ---- パネル(ゲームの窓) */
.panel{overflow:auto;padding:4px 4px 10px;-webkit-overflow-scrolling:touch}
.win,.say{background:linear-gradient(180deg,var(--win),var(--win2));border:3px solid #fff;box-shadow:0 0 0 3px #000;padding:10px 10px 12px;margin:3px}
.ttl{font-weight:900;font-size:16px;margin-bottom:6px;color:var(--gold)}
.ttl small{font-size:11px;color:var(--dim);margin-left:8px}
.ttl.sub{margin-top:12px;border-top:2px dashed #4a4aa0;padding-top:8px}
.hint{font-size:12px;color:var(--dim);margin:6px 0}
.hl{color:var(--gold)}
.dn{color:var(--red)}
.pills{display:flex;flex-wrap:wrap;gap:4px}
.pill{font-size:11px;background:#000;border:1px solid #6a6ad0;padding:1px 6px;font-weight:700}
/* 魔王・部下のセリフ */
.say{display:grid;grid-template-columns:auto 1fr;gap:10px;align-items:center}
.say .face{display:flex;flex-direction:column;align-items:center;gap:2px}
.say .face b{font-size:11px;color:var(--gold)}
.say p{margin:0;font-size:15px;line-height:1.7;font-weight:700}
.say.boss{border-color:#ff9a9a}
.say canvas{width:64px;height:64px}
.opts{display:grid;gap:8px;margin:8px 3px 0}
.b{border:3px solid #fff;background:#2a2a9a;color:#fff;font-weight:900;font-size:15px;padding:10px 12px;box-shadow:0 0 0 3px #000,inset 0 -4px 0 rgba(0,0,0,.35);text-align:left;line-height:1.4}
.b:active{transform:translateY(2px);box-shadow:0 0 0 3px #000}
.b.go{background:#b02a2a;text-align:center;font-size:17px;letter-spacing:.06em}
.b.big{font-size:20px;padding:14px}
.chips{display:flex;flex-wrap:wrap;gap:5px;margin:8px 3px 0}
.chips i{font-style:normal;font-size:12px;font-weight:900;padding:2px 8px;border:2px solid #fff;background:#000}
.chips .up{color:var(--green)}.chips .dn{color:var(--red)}

/* ---- 配置の部下カード・ショップ */
.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(104px,1fr));gap:6px;margin-top:6px}
.card{border:3px solid #6a6ad0;background:#0c0c3c;padding:4px 4px 6px;display:grid;justify-items:center;gap:1px;text-align:center}
.card .nm{font-size:12px;font-weight:900}
.card .st em{font-style:normal;font-size:10px;font-weight:900;padding:0 5px}
.card .st .t0{color:var(--green)}.card .st .t1{color:#d8e860}.card .st .t2{color:#ffb050}.card .st .t3{color:var(--red);animation:blink .6s infinite steps(2)}
.card .pl{font-size:10px;color:var(--dim)}
.card.on{background:#16165a}
.card.sel{border-color:var(--gold);box-shadow:0 0 0 3px #000,0 0 0 6px var(--gold)}
.card canvas,.shop canvas{width:32px;height:32px}
.shops{display:grid;gap:5px}
.shop{display:grid;grid-template-columns:auto 1fr auto;grid-template-rows:auto auto;gap:0 8px;align-items:center;border:3px solid #6a6ad0;background:#0c0c3c;padding:4px 8px;text-align:left}
.shop canvas{grid-row:1 / 3}
.shop .nm{font-weight:900;font-size:13px}
.shop .nm small{font-size:10px;color:var(--dim);margin-left:6px;font-weight:700}
.shop .pr{font-weight:900;color:var(--gold);font-size:14px}
.shop .ds{grid-column:2 / 4;font-size:11px;color:var(--dim)}
.shop.dis{opacity:.4}
.shop:not(.dis):active{border-color:var(--gold)}
.rep p{margin:6px 0;font-size:14px;line-height:1.6;font-weight:700}
.blog{height:160px;overflow:auto;background:#000;border:2px solid #6a6ad0;padding:6px 8px}
.blog p{margin:3px 0;font-size:13px;font-weight:700}
.blog p:last-child{color:var(--gold)}

/* ---- バナー・音 */
.banner{position:fixed;left:0;right:0;top:34%;text-align:center;pointer-events:none;opacity:0;z-index:30;text-shadow:3px 3px 0 #000}
.banner b{display:block;font-size:min(16vw,76px);color:var(--gold);letter-spacing:.1em;-webkit-text-stroke:2px #000;paint-order:stroke fill}
.banner small{display:block;font-size:20px;font-weight:900;color:#fff;letter-spacing:.4em}
.banner.show{animation:ban 1.2s steps(14) forwards}
@keyframes ban{0%{opacity:0;transform:translateX(-60px)}12%{opacity:1;transform:none}80%{opacity:1}100%{opacity:0;transform:translateX(60px)}}
.snd{position:fixed;right:max(8px,env(safe-area-inset-right));bottom:max(6px,env(safe-area-inset-bottom));z-index:40;font-size:11px;font-weight:900;background:#000;border:2px solid #fff;padding:3px 8px;color:#fff}

/* ---- タイトル */
.title{position:fixed;inset:0;z-index:20;background:var(--bg);overflow:auto;display:flex;justify-content:center;
  background-image:linear-gradient(#1b1856 50%,transparent 50%),linear-gradient(90deg,#1b1856 50%,transparent 50%);background-size:40px 40px,40px 40px}
.back{position:absolute;left:12px;top:calc(10px + env(safe-area-inset-top));font-size:12px;font-weight:900;text-decoration:none;border-bottom:2px solid #fff;z-index:2}
.tBody{width:100%;max-width:520px;text-align:center;padding:48px 20px 24px;display:flex;flex-direction:column;align-items:center}
.tSprites{display:flex;align-items:flex-end;gap:12px;margin-bottom:10px}
.tSprites canvas{animation:bob 1s steps(2) infinite}
.tSprites canvas:first-child{animation-delay:.2s}
@keyframes bob{50%{transform:translateY(-6px)}}
.tSub{margin:0;font-weight:900;letter-spacing:.2em;color:var(--dim);font-size:13px}
.tLogo{margin:6px 0 0;font-size:min(14vw,72px);line-height:1.05;letter-spacing:.04em}
.tLogo span{display:block;color:#fff;-webkit-text-stroke:3px #000;paint-order:stroke fill;text-shadow:4px 4px 0 #b02a2a,6px 6px 0 #000}
.tLogo span+span{color:var(--gold);font-size:.9em}
.tLead{font-weight:700;line-height:1.8;margin:14px 0 16px}
.tColl{font-size:12px;font-weight:900;color:var(--dim);margin:10px 0}
.how{list-style:none;padding:10px 14px;margin:6px 0 12px;text-align:left;font-size:12px;line-height:1.9;background:rgba(0,0,0,.45);border:2px solid #4a4aa0}
.how li::before{content:"▶ ";color:var(--gold)}
.how b{color:var(--gold)}
.foot{font-size:10px;color:var(--dim);line-height:1.7;margin:4px 0 0}
.title .b.go{width:min(100%,360px);text-align:center}

/* ---- 結果(人事評価書) */
.result{position:fixed;inset:0;z-index:25;background:rgba(10,8,40,.92);display:flex;justify-content:center;overflow:auto;padding:12px}
.rCard{width:100%;max-width:440px;height:fit-content;margin:auto;background:#f4ecd0;color:#3a2a18;border:4px solid #3a2a18;box-shadow:0 0 0 4px #000;padding:14px 14px 16px;text-align:center}
.rHead{font-weight:900;font-size:26px;letter-spacing:.3em;border-bottom:4px solid #3a2a18;padding-bottom:6px}
.rHead small{display:block;font-size:12px;letter-spacing:.2em;margin-top:2px}
.rMain{display:flex;justify-content:center;align-items:center;gap:16px;margin:10px 0 2px}
.rRankBox b{display:grid;place-items:center;width:104px;height:104px;border:6px solid #c0392b;color:#c0392b;font-size:80px;font-weight:900;transform:rotate(-8deg)}
.rRankBox b[data-r="D"],.rRankBox b[data-r="E"]{color:#555;border-color:#555}
.rIco canvas{width:128px;height:128px}
.rCard h2{margin:6px 0 4px;font-size:22px;color:#7a1a1a}
.rText{margin:0 0 8px;font-weight:700;line-height:1.7;font-size:14px}
.rBoss{margin:0 0 8px;font-weight:900;font-size:14px;line-height:1.6;background:#e6dab0;border:2px solid #3a2a18;padding:6px 8px}
.rStats{display:grid;grid-template-columns:auto 1fr;gap:3px 12px;text-align:left;font-size:13px;margin:8px auto;max-width:300px}
.rStats dt{font-weight:900;color:#6a5a48}.rStats dd{margin:0;font-weight:900}
.rColl{display:flex;flex-wrap:wrap;gap:4px;justify-content:center;align-items:center;font-size:12px;margin:8px 0}
.rColl b{margin-right:6px}
.rColl span{display:inline-grid;place-items:center;width:20px;height:20px;border:2px solid #3a2a18;font-weight:900;font-size:11px;color:#999}
.rColl span.on{background:#c0392b;color:#fff;border-color:#3a2a18}
.rActs{display:flex;gap:8px;justify-content:center;margin-top:8px}
.rActs .b{flex:1;max-width:220px;text-align:center}
.rCard .b{background:#3a2a18;color:#f4ecd0;border-color:#3a2a18;box-shadow:0 0 0 3px #000}
.rCard .b.go{background:#b02a2a;color:#fff;border-color:#b02a2a}
.shareMsg{font-size:11px;min-height:14px;margin:6px 0 0}
.rImg{width:100%;border:3px solid #3a2a18;margin-top:6px}
@media (max-height:520px){.panel{padding-bottom:30px}}
.pill.hurt{border-color:#ff9a9a;color:#ffd0d0}
.pill.out{border-color:#8a8ad0;color:#a8a8d8;text-decoration:line-through}
