/* ダ・ダ・ダンケート：白黒の漫画風。色は使わず、トーン（網点・斜線・格子）で陣営を描き分ける */
:root{
  --paper:#fdfdfb;
  --ink:#111111;
  --tone:#8a8a8a;
  --white:#ffffff;
  --muted:#4a4a48;
  --f-display:var(--f-body);
  --f-sfx:var(--f-body);
  --f-body:"Zen Kaku Gothic New","Hiragino Kaku Gothic ProN","Yu Gothic","Meiryo",sans-serif;
  --dots:radial-gradient(var(--ink) 30%,transparent 33%) 0 0/6px 6px;
  --dots-fine:radial-gradient(var(--ink) 24%,transparent 27%) 0 0/4px 4px;
  --hatch:repeating-linear-gradient(-45deg,var(--ink) 0 2px,var(--white) 2px 6px);
  --cross:repeating-linear-gradient(0deg,var(--ink) 0 1.4px,transparent 1.4px 5px),repeating-linear-gradient(90deg,var(--ink) 0 1.4px,transparent 1.4px 5px);
  color-scheme:light;
}
*{box-sizing:border-box}
[hidden]{display:none !important}
html,body{margin:0;background:var(--paper);color:var(--ink);height:100%}
body{font-family:var(--f-body);font-size:14px;line-height:1.6;-webkit-text-size-adjust:100%}
button,input,textarea{font:inherit;color:inherit}
button{cursor:pointer}
a{color:inherit}
:focus-visible{outline:3px solid var(--ink);outline-offset:2px}

/* ---------- アプリの枠（スマホ幅で中央） ---------- */
.app{max-width:480px;margin:0 auto;min-height:100%;height:100dvh;display:flex;flex-direction:column;background:var(--white);
  border-inline:3px solid var(--ink);position:relative;overflow:hidden}
.appbar{flex:none;display:flex;align-items:center;gap:8px;padding:8px 12px;border-bottom:3px solid var(--ink);padding-top:max(8px,env(safe-area-inset-top))}
.appbar .logo{height:40px;width:auto;margin-left:-4px;display:block}
.appbar-home{flex-wrap:wrap;justify-content:center;gap:4px;padding-top:max(12px,env(safe-area-inset-top))}
.appbar-home .logo{width:100%;max-width:380px;height:76px;object-fit:cover;margin:0}
.appbar-home .nav{justify-content:flex-end;width:100%}
.appbar .back{font-family:var(--f-display);font-weight:700;color:var(--ink);text-decoration:none;border:2.5px solid var(--ink);background:var(--white);width:34px;height:34px;display:grid;place-items:center;font-size:16px;line-height:1;flex:none}
.appbar .ttl{font-family:var(--f-display);font-weight:700;font-size:16px;min-width:0;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.appbar .ico{width:34px;height:34px;flex:none;border:2.5px solid var(--ink);border-radius:50%;display:grid;place-items:center;background:var(--white)}
.screen{flex:1;min-height:0;overflow-y:auto;overflow-x:hidden;position:relative}

/* ---------- 共通 ---------- */
.tag{border:1.5px solid var(--ink);padding:0 6px;line-height:1.6}
.tag.inv{background:var(--ink);color:var(--white)}
.btn{border:3px solid var(--ink);background:var(--ink);color:var(--white);font-family:var(--f-display);font-weight:700;font-size:15px;padding:8px 14px;box-shadow:3px 3px 0 var(--tone);text-decoration:none;text-align:center}
.btn.ghost{background:var(--white);color:var(--ink)}
.btn:active{transform:translate(2px,2px)}
.p0{background:var(--ink)} .p1{background:var(--dots),var(--white)} .p2{background:var(--hatch)} .p3{background:var(--cross),var(--white)}
.ratio{display:flex;height:26px;border:2.5px solid var(--ink);background:var(--white)}
.ratio > div{position:relative;min-width:0;border-right:2.5px solid var(--ink);transition:flex-grow .25s}
.ratio > div:last-child{border-right:0}
.ratio .pct{position:absolute;left:4px;top:50%;transform:translateY(-50%);background:var(--white);border:1.5px solid var(--ink);font-size:10.5px;font-weight:700;padding:0 3px;line-height:1.35;white-space:nowrap;font-variant-numeric:tabular-nums}
.toast{position:absolute;left:50%;bottom:18px;transform:translateX(-50%);z-index:9;background:var(--ink);color:var(--white);font-weight:700;font-size:12.5px;padding:6px 12px;border:2.5px solid var(--white);box-shadow:0 0 0 2.5px var(--ink);white-space:nowrap;opacity:0;transition:opacity .2s;pointer-events:none}
.toast.on{opacity:1}

/* ---------- お題一覧 ---------- */
.tabs{position:sticky;top:0;z-index:3;display:flex;background:var(--white);border-bottom:3px solid var(--ink)}
.tabs button{flex:1;min-width:0;border:0;background:var(--white);padding:10px 0 8px;font-weight:700;font-size:12.5px;white-space:nowrap;border-right:2px solid var(--ink)}
.tabs button:last-child{border-right:0}
.tabs button[aria-selected="true"]{background:var(--ink);color:var(--white)}
@media (max-width:360px){.tabs button{font-size:11.5px}}
.feed{padding:14px 12px 24px;display:flex;flex-direction:column;gap:16px;transition:opacity .15s}
.feed.loading{opacity:.45}
.empty{margin:24px 0;text-align:center;font-weight:700;font-size:13px;color:var(--muted)}
.card{position:relative;border:3px solid var(--ink);background:var(--white);padding:12px 12px 10px;text-align:left;width:100%;box-shadow:4px 4px 0 var(--ink);display:flex;flex-direction:column;gap:9px;text-decoration:none;color:var(--ink)}
.card:active{transform:translate(2px,2px);box-shadow:2px 2px 0 var(--ink)}
.card h3{margin:0;font-weight:700;font-size:16px;line-height:1.4;text-wrap:balance;padding-right:46px}
.card .tags{display:flex;gap:6px;flex-wrap:wrap;font-size:11px;font-weight:700}
.card .stats{display:flex;gap:12px;font-size:12px;font-weight:700;border-top:1.5px dashed var(--ink);padding-top:7px;font-variant-numeric:tabular-nums}
.card .stats span{display:inline-flex;align-items:center;gap:4px}
.card .stats svg{width:15px;height:15px;flex:none}
.card .stats .left{margin-left:auto}
.card .stats .left.urgent{background:var(--ink);color:var(--white);padding:0 6px}
.card .stats .verdict{font-weight:700}
.card.hot::before{content:"";position:absolute;inset:0;pointer-events:none;opacity:.13;
  background:repeating-conic-gradient(from 3deg at 100% 0%,var(--ink) 0 .9deg,transparent .9deg 6deg)}
.card.closed .ratio{opacity:.9}
.badge-official{position:absolute;top:-12px;right:-8px;width:56px;height:56px;display:grid;place-items:center;font-family:var(--f-display);font-weight:700;font-size:13px;color:var(--white);
  background:var(--ink);clip-path:polygon(50% 0,61% 18%,82% 8%,80% 30%,100% 36%,86% 52%,100% 68%,79% 72%,82% 93%,61% 83%,50% 100%,39% 83%,18% 93%,21% 72%,0 68%,14% 52%,0 36%,20% 30%,18% 8%,39% 18%);transform:rotate(8deg)}
.legend{display:grid;grid-template-columns:1fr 1fr;gap:3px 10px;font-size:12px;font-weight:700}
.legend span{display:flex;align-items:center;gap:6px;min-width:0}
.legend em{font-style:normal;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sw{flex:none;width:14px;height:14px;border:1.5px solid var(--ink)}

/* トップ：公式は挿絵付き、画像のないお題は文字を広く見せる。 */
.app-home{background:var(--paper)}
.app-home .appbar-home{position:relative;border-bottom:0;padding:8px 16px 10px;gap:0;background:var(--paper)}
.app-home .appbar-home .logo{max-width:390px;height:76px;mix-blend-mode:multiply}
.home-tagline{margin:0;text-align:center;font-size:12px;font-weight:700;line-height:1.5}
.home-tagline::before,.home-tagline::after{content:"";display:inline-block;width:16px;height:2px;background:var(--ink);vertical-align:middle;margin:0 8px}
.app-home .appbar-home .nav{margin-top:8px}
.app-home .appbar-home .nav a{border:0;padding:0;font-family:var(--f-body);font-size:11px;background:transparent;text-decoration:underline;text-underline-offset:3px}
.app-home .screen{padding:0 12px}
.app-home .tabs{border:2px solid var(--ink);border-radius:11px;margin:0 0 4px;overflow:visible;background:var(--paper)}
.app-home .tabs button{position:relative;padding:9px 2px;font-size:12px;background:transparent}
.app-home .tabs button:first-child{border-radius:8px 0 0 8px}
.app-home .tabs button:last-child{border-radius:0 8px 8px 0}
.app-home .tabs button[aria-selected="true"]{background:var(--ink)}
.app-home .tabs button[aria-selected="true"]::after{content:"";position:absolute;bottom:-8px;left:calc(50% - 7px);border-left:7px solid transparent;border-right:7px solid transparent;border-top:7px solid var(--ink)}
.app-home .feed{padding:14px 0 22px;gap:14px}
.card-home{border:2.5px solid var(--ink);border-radius:13px;padding:12px;gap:10px;box-shadow:0 2px 0 var(--ink);overflow:hidden;background:var(--paper)}
.card-home:active{transform:translateY(2px);box-shadow:none}
.card-home .tags{position:relative;z-index:1;gap:5px;font-size:10px}
.card-home .tag{border-radius:3px;line-height:1.5;padding:0 5px}
.card-home.hot .tags .tag:first-child{transform:rotate(-3deg)}
.card-home .card-heading{display:flex;align-items:center;gap:8px;position:relative;min-height:66px}
.card-home h3{padding:0;font-family:var(--f-body);font-weight:700;font-size:26px;line-height:1.35;text-wrap:pretty;overflow-wrap:anywhere;flex:1;min-width:0}
.card-home.has-artwork .card-heading{min-height:100px}
.card-home.has-artwork h3{font-size:23px;flex:1 1 60%}
.card-home .card-artwork{flex:0 0 38%;width:38%;height:112px;object-fit:contain;mix-blend-mode:multiply}
.card-home .legend{grid-template-columns:repeat(var(--choices),minmax(0,1fr));gap:6px;font-size:12px}
.card-home .legend span{justify-content:center;border:1.5px solid var(--ink);border-radius:4px;padding:2px 4px;background:var(--white);line-height:1.4}
.card-home .legend em{overflow:visible;white-space:normal;overflow-wrap:anywhere;text-align:center}
.card-home .legend .sw{width:9px;height:9px;border-width:1px}
.card-home .ratio{height:30px;border-width:2px;border-radius:18px;overflow:hidden}
.card-home .ratio>div{border-right-width:1.5px}
.card-home .ratio .pct{left:50%;transform:translate(-50%,-50%);font-family:var(--f-display);font-weight:700;font-size:16px;border:0;line-height:1.2;border-radius:2px;padding:0 3px}
.card-home .ratio .p0 .pct{color:var(--white);background:var(--ink)}
.card-home .stats{border:0;padding:0;gap:6px;font-size:12px;align-items:center;flex-wrap:wrap}
.card-home .stats>span:first-child{gap:4px}
.card-home .stats b{font-size:15px;font-weight:700}
.card-home .stats svg{height:17px;width:17px}
.card-home .stats .left{gap:4px;font-size:11px}
.card-home .stats .left.urgent{border-radius:3px;padding:1px 4px}
.card-home.hot::before{inset:0 0 auto auto;width:100px;height:100px;opacity:.08}
.home-action{flex:none;padding:10px 20px max(12px,env(safe-area-inset-bottom));background:var(--paper);border-top:1px solid #dededb}
.home-action a{display:flex;align-items:center;justify-content:center;gap:8px;min-height:48px;border:2px solid var(--ink);border-radius:30px;background:var(--ink);color:var(--white);font-family:var(--f-display);font-weight:700;font-size:20px;text-decoration:none}
.home-action a span{font-family:var(--f-body);font-size:30px;line-height:1}
.home-action a:active{transform:translateY(2px)}
@media(max-width:360px){
  .app-home .screen{padding-inline:10px}
  .app-home .tabs button{font-size:10.5px}
  .home-tagline{font-size:10.5px}
  .home-tagline::before,.home-tagline::after{width:10px;margin-inline:5px}
  .card-home{padding:10px}
  .card-home h3{font-size:21px}
  .card-home.has-artwork h3{font-size:18px}
  .card-home .card-artwork{height:94px}
  .card-home .legend{gap:4px;font-size:10px}
}

/* ---------- 投票（連打） ---------- */
.vote-wrap{display:flex;flex-direction:column;height:100%;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}
.first{flex:none;margin:10px 12px 0;border:2.5px solid var(--ink);background:var(--ink);color:var(--white);padding:6px 10px;font-size:11.5px;font-weight:700;display:flex;gap:8px;align-items:center}
.first span{flex:1;line-height:1.45}
.first button{flex:none;border:2px solid var(--white);background:var(--ink);color:var(--white);font-weight:700;font-size:11px;padding:1px 8px}
.first + .q-box{margin-top:10px}
.q-box{flex:none;margin:12px 12px 0;border:3px solid var(--ink);padding:10px 12px;position:relative;background:var(--white)}
.q-box::after{content:"";position:absolute;left:28px;bottom:-14px;width:22px;height:14px;background:var(--ink);clip-path:polygon(0 0,100% 0,15% 100%)}
.q-box h1{margin:0;font-weight:700;font-size:18px;line-height:1.35;text-wrap:balance}
.q-box .sub{display:flex;gap:10px;font-size:11.5px;font-weight:700;margin-top:4px;font-variant-numeric:tabular-nums;flex-wrap:wrap}
.gauge-row{flex:none;margin:20px 12px 0;display:flex;align-items:center;gap:8px;font-size:11px;font-weight:700}
.gauge{flex:1;height:16px;border:2.5px solid var(--ink);position:relative;background:var(--white);overflow:hidden}
.gauge i{position:absolute;inset:0 auto 0 0;background:var(--ink);transition:width .15s}
.gauge i::after{content:"";position:absolute;inset:0;background:repeating-linear-gradient(90deg,transparent 0 8px,var(--white) 8px 10px)}
.gauge-row .num{font-variant-numeric:tabular-nums;min-width:58px;text-align:right}
.tiles{flex:1;min-height:180px;margin:10px 12px 0;display:grid;gap:10px}
.tiles.two{grid-template-columns:1fr 1fr}
.tiles.four{grid-template-columns:1fr 1fr;grid-template-rows:1fr 1fr}
.tile{position:relative;border:3.5px solid var(--ink);overflow:hidden;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;padding:10px 6px;
  user-select:none;-webkit-user-select:none;touch-action:none;-webkit-tap-highlight-color:transparent;background:var(--white);cursor:pointer}
.tile::before{content:"";position:absolute;inset:-40%;pointer-events:none;opacity:0;transition:opacity .2s;
  background:repeating-conic-gradient(from 0deg at 50% 50%,var(--ink) 0 1.1deg,transparent 1.1deg 7deg);
  -webkit-mask:radial-gradient(circle,transparent 28%,#000 30%);mask:radial-gradient(circle,transparent 28%,#000 30%)}
.tile.pressing::before{opacity:.55}
.tile.pressing{transform:scale(.97)}
.tile.t0{background:var(--ink);color:var(--white)}
.tile.t0::before{background:repeating-conic-gradient(from 0deg at 50% 50%,var(--white) 0 1.1deg,transparent 1.1deg 7deg)}
.tile.t1{background:var(--dots-fine),var(--white)}
.tile.t2{background:repeating-linear-gradient(-45deg,var(--ink) 0 2px,var(--white) 2px 9px)}
.tile.t3{background:var(--cross),var(--white)}
.tile .lbl{position:relative;font-family:var(--f-display);font-weight:700;font-size:22px;line-height:1.2;text-align:center;background:var(--white);color:var(--ink);border:3px solid var(--ink);padding:6px 10px;max-width:100%;word-break:keep-all;overflow-wrap:anywhere}
.tiles.four .lbl{font-size:17px;padding:4px 8px}
.tile .cnt{position:relative;font-family:var(--f-display);font-weight:700;font-size:13px;background:var(--white);color:var(--ink);border:2px solid var(--ink);padding:0 6px;font-variant-numeric:tabular-nums}
.tile[aria-disabled="true"]{cursor:default}
.sfx{position:absolute;pointer-events:none;font-family:var(--f-sfx);font-weight:700;font-size:34px;line-height:1;white-space:nowrap;color:var(--white);
  -webkit-text-stroke:2px var(--ink);paint-order:stroke fill;text-shadow:3px 3px 0 var(--ink);animation:sfx .7s ease-out forwards;z-index:4}
.tile.t0 .sfx{color:var(--ink);-webkit-text-stroke:2px var(--white);text-shadow:3px 3px 0 var(--white)}
@keyframes sfx{0%{transform:translate(-50%,-50%) scale(.4) rotate(var(--r));opacity:1}
  25%{transform:translate(-50%,-70%) scale(1.15) rotate(var(--r));opacity:1}
  100%{transform:translate(-50%,-150%) scale(1) rotate(var(--r));opacity:0}}
.result{flex:none;margin:12px;display:flex;flex-direction:column;gap:6px}
.result .head{display:flex;justify-content:space-between;align-items:baseline;font-size:12px;font-weight:700;font-variant-numeric:tabular-nums}
.result .head .big{font-family:var(--f-display);font-weight:700;font-size:16px}
.result .ratio{height:30px}
.me{display:flex;gap:8px;font-size:11.5px;font-weight:700;font-variant-numeric:tabular-nums}
.me span{flex:1;border:2px solid var(--ink);padding:2px 6px;text-align:center}
.conn{flex:none;margin:0 12px 10px;font-size:11px;font-weight:700;color:var(--muted);display:flex;justify-content:space-between}
.conn .dot{display:inline-block;width:8px;height:8px;border-radius:50%;border:1.5px solid var(--ink);margin-right:4px;vertical-align:middle}
.conn.ok .dot{background:var(--ink)}

/* 連打コンボの吹き出し */
.combo{position:absolute;left:50%;top:150px;z-index:5;pointer-events:none;transform:translate(-50%,0);display:flex;flex-direction:column;align-items:center;opacity:0;transition:opacity .25s}
.combo.on{opacity:1}
.combo .burst{position:absolute;left:50%;top:50%;width:135%;aspect-ratio:1;transform:translate(-50%,-50%) scale(0);background:var(--ink);transition:transform .2s;
  clip-path:polygon(50% 0,58% 30%,80% 8%,70% 36%,100% 30%,76% 50%,100% 70%,70% 64%,80% 92%,58% 70%,50% 100%,42% 70%,20% 92%,30% 64%,0 70%,24% 50%,0 30%,30% 36%,20% 8%,42% 30%)}
.combo.lv2 .burst{transform:translate(-50%,-50%) scale(1)}
.combo.lv3 .burst{animation:spin 1.2s linear infinite}
@keyframes spin{to{transform:translate(-50%,-50%) scale(1.08) rotate(360deg)}}
.combo .n{position:relative;font-family:var(--f-sfx);font-weight:700;line-height:.95;color:var(--white);-webkit-text-stroke:3px var(--ink);paint-order:stroke fill;text-shadow:4px 4px 0 var(--ink);font-variant-numeric:tabular-nums;white-space:nowrap}
.combo .n small{font-size:.42em;margin-left:2px}
.combo.lv2 .n{-webkit-text-stroke:3px var(--white);color:var(--ink);text-shadow:4px 4px 0 var(--white)}
.combo .cap{position:relative;margin-top:4px;font-family:var(--f-display);font-weight:700;font-size:14px;background:var(--white);border:2.5px solid var(--ink);padding:1px 8px;white-space:nowrap}
.combo .cap:empty{display:none}

/* ゲージ切れ・締切などの覆い */
.overlay{position:absolute;inset:0;z-index:6;display:grid;place-items:center;background:var(--dots),rgba(255,255,255,.55)}
.overlay > div{background:var(--white);border:3.5px solid var(--ink);padding:16px 18px;width:min(86%,360px);text-align:center;box-shadow:6px 6px 0 var(--ink)}
.overlay p{margin:0 0 4px;font-family:var(--f-display);font-weight:700;font-size:22px}
.overlay small{display:block;margin-bottom:12px;font-size:12.5px;color:var(--muted);font-weight:700}
.overlay .row{display:flex;gap:8px;justify-content:center;flex-wrap:wrap;border:0;padding:0;background:none}

/* ---------- 結果発表 ---------- */
.app-duel{background:var(--paper)}
.app-duel .appbar{justify-content:space-between;background:var(--paper);padding-block:4px}
.app-duel .back{border:0;font-size:26px;width:32px}
.duel-logo{width:calc(100% - 100px);max-width:300px;height:54px;object-fit:cover;mix-blend-mode:multiply}
.app-duel .screen{overflow-y:auto}
.app-duel .vote-wrap{min-height:100%;height:auto;padding-bottom:8px}
.app-duel .first{margin:8px 12px 0;border-radius:7px;font-size:10px;padding:5px 8px}
.app-duel .q-box{margin:10px 12px 0;padding:0;border:0;background:transparent}
.app-duel .q-box::after{display:none}
.duel-question{position:relative;display:flex;align-items:center;gap:8px;padding:14px 12px;border:2.5px solid var(--ink);border-radius:20px 8px 20px 8px;background:var(--white);min-height:100px}
.duel-question::before{content:"";position:absolute;bottom:-14px;left:26px;width:22px;height:14px;background:var(--ink);clip-path:polygon(0 0,100% 0,0 100%)}
.duel-question::after{content:"";position:absolute;bottom:-9.4px;left:28.5px;width:18px;height:12px;background:var(--white);clip-path:polygon(0 0,100% 0,0 100%)}
.app-duel .q-box h1{position:relative;flex:1;min-width:0;font-size:27px;line-height:1.35;text-wrap:pretty;overflow-wrap:anywhere}
.duel-artwork{flex:0 0 32%;width:32%;height:100px;object-fit:contain;mix-blend-mode:multiply}
.app-duel .q-box .sub{margin:14px 0 0;gap:8px;align-items:center;font-size:11px;text-align:left}
.app-duel .gauge-row{margin:12px 12px 0;padding:8px;border:2px solid var(--ink);border-radius:11px;gap:8px;background:var(--white)}
.gauge-label{padding:3px 6px;background:var(--ink);color:var(--white);border-radius:4px;white-space:nowrap;font-size:12px}
.app-duel .gauge{height:18px;border-width:2px;border-radius:10px}
.app-duel .gauge-row .num{font-size:12px;min-width:64px}
.app-duel .tiles{flex:none;min-height:0;height:clamp(210px,34dvh,380px);gap:10px;margin-top:12px}
.app-duel .tiles.four{height:clamp(260px,40dvh,420px)}
.app-duel .tile{border-radius:16px;border-width:3px;box-shadow:inset 0 0 0 3px var(--paper);padding:12px 6px}
.app-duel .tile .lbl{font-size:clamp(22px,5.5vw,34px);padding:4px;border:0;background:var(--white);border-radius:4px;line-height:1.3}
.app-duel .tile.t0 .lbl{background:var(--ink);color:var(--white)}
.app-duel .tiles.four .lbl{font-size:21px}
.app-duel .tile .cnt{font-size:12px;border-radius:4px;border-width:1px}
.app-duel .result{margin-top:12px;gap:8px}
.app-duel .result .head{font-size:11px}
.app-duel .result .ratio{border-radius:22px;height:34px;overflow:hidden;border-width:2px}
.app-duel .result .pct{font-size:19px;left:50%;transform:translate(-50%,-50%);border:0;border-radius:3px;line-height:1.2}
.app-duel .result .p0 .pct{color:var(--white);background:var(--ink)}
.app-duel .me{flex-direction:column;gap:4px}
.app-duel .me .my-taps{display:flex;align-items:center;justify-content:center;gap:8px;min-height:58px;border-radius:12px;border-width:2px;font-size:16px;background:var(--white)}
.app-duel .my-taps b{font-size:34px;line-height:1.2;font-variant-numeric:tabular-nums}
.app-duel .me .tap-speed{border:0;font-size:10px;padding:0;color:var(--muted)}
.tap-hint{margin:0;text-align:center;font-size:16px;font-weight:700}
.app-duel .conn{gap:8px;flex-wrap:wrap;font-size:10px;margin-bottom:4px}
@media(max-width:360px){
  .app-duel .q-box h1{font-size:22px}
  .duel-artwork{height:80px}
  .app-duel .gauge-row{gap:5px;padding:6px}
  .gauge-label{font-size:10px}
  .app-duel .gauge-row .num{min-width:54px;font-size:10px}
  .app-duel .tiles.four .lbl{font-size:18px}
}

.res{padding:14px 12px 24px;display:flex;flex-direction:column;gap:14px}
.res .rq{font-weight:700;font-size:15px;text-align:center;text-wrap:balance}
.win{position:relative;display:grid;place-items:center;padding:34px 40px 30px;text-align:center}
.win::before{content:"";position:absolute;inset:0;background:var(--ink);
  clip-path:polygon(50% 0,57% 22%,75% 6%,70% 28%,95% 18%,80% 40%,100% 50%,80% 60%,95% 82%,70% 72%,75% 94%,57% 78%,50% 100%,43% 78%,25% 94%,30% 72%,5% 82%,20% 60%,0 50%,20% 40%,5% 18%,30% 28%,25% 6%,43% 22%)}
.win b{position:relative;display:block;font-family:var(--f-sfx);font-weight:700;font-size:25px;line-height:1.15;color:var(--white);-webkit-text-stroke:2px var(--ink);paint-order:stroke fill;overflow-wrap:anywhere;text-wrap:balance;word-break:auto-phrase}
.win small{position:relative;display:inline-block;margin-top:6px;font-family:var(--f-display);font-weight:700;font-size:13px;color:var(--ink);background:var(--white);border:2px solid var(--ink);padding:0 8px}
.win.pending b{opacity:.85}
.res .ratio{height:30px}
.ranks{list-style:none;margin:0;padding:0;border:2.5px solid var(--ink)}
.ranks li{display:flex;align-items:center;gap:8px;padding:6px 10px;font-size:13px;font-weight:700;font-variant-numeric:tabular-nums;border-top:1.5px dashed var(--ink)}
.ranks li:first-child{border-top:0}
.ranks li.top{background:var(--ink);color:var(--white)}
.ranks li.top .sw{border-color:var(--white)}
.ranks .rk{font-family:var(--f-display);font-weight:700;font-size:14px;width:16px;text-align:center}
.ranks em{font-style:normal;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ranks b{font-family:var(--f-display);font-weight:700;font-size:15px}
.ranks small{width:38px;text-align:right;font-size:12px}
.facts{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.facts div{border:2.5px solid var(--ink);padding:6px 8px;display:flex;flex-direction:column;font-size:11px;font-weight:700}
.facts b{font-family:var(--f-display);font-weight:700;font-size:18px;font-variant-numeric:tabular-nums}
.mybox{border:3px solid var(--ink);box-shadow:4px 4px 0 var(--ink);padding:10px 12px;display:flex;flex-direction:column;gap:4px}
.mybox .ttl2{font-family:var(--f-display);font-weight:700;font-size:14px}
.mybox p{margin:0;font-size:12.5px;font-weight:700}
.res .row-btn{display:flex;gap:8px}
.res .row-btn .btn{flex:1;font-size:14px}
.res .next-lab{font-family:var(--f-display);font-weight:700;font-size:13px;display:flex;align-items:center;gap:6px;margin-top:6px}
.res .next-lab::after{content:"";flex:1;height:2px;background:var(--ink)}
.next-cards{display:flex;flex-direction:column;gap:16px}

@media (prefers-reduced-motion: reduce){
  .sfx,.combo .burst{animation:none!important}
}

/* ---------- 一覧の上のボタン ---------- */
.appbar .nav{margin-left:auto;display:flex;gap:6px}
.appbar .nav a{font-family:var(--f-display);font-weight:700;font-size:12.5px;text-decoration:none;border:2.5px solid var(--ink);padding:3px 8px;background:var(--white);white-space:nowrap}
.appbar .nav a.inv{background:var(--ink);color:var(--white)}

/* ---------- 投稿・ログイン・マイページ・管理画面のフォーム ---------- */
.form{padding:14px 14px 24px;display:flex;flex-direction:column;gap:18px}
.field{display:flex;flex-direction:column;gap:6px}
.field > label,.field > .lab{font-family:var(--f-display);font-weight:700;font-size:14px;display:flex;justify-content:space-between;align-items:baseline}
.field > label small,.field > .lab small{font-family:var(--f-body);font-weight:700;font-size:11px;color:var(--muted);font-variant-numeric:tabular-nums}
.field textarea,.field input[type=text],.field input[type=email],.field input[type=password],.field input[type=datetime-local]{border:2.5px solid var(--ink);background:var(--white);padding:8px 10px;font-size:16px;font-weight:700;width:100%;border-radius:0}
.field textarea{resize:none;height:66px;line-height:1.45}
.seg{display:flex;border:2.5px solid var(--ink)}
.seg button{flex:1;border:0;border-right:2px solid var(--ink);background:var(--white);padding:7px 0;font-weight:700;font-size:13px}
.seg button:last-child{border-right:0}
.seg button[aria-pressed="true"]{background:var(--ink);color:var(--white)}
.opts{display:flex;flex-direction:column;gap:8px}
.opt{display:flex;align-items:center;gap:8px}
.opt .sw{width:22px;height:22px;border-width:2px}
.opt input{flex:1}
.note{font-size:11.5px;font-weight:700;border:2px dashed var(--ink);padding:8px 10px;line-height:1.55}
.note.inv{background:var(--ink);color:var(--white);border-style:solid}
.note a{font-weight:700}
.preview-lab{font-family:var(--f-display);font-weight:700;font-size:13px;display:flex;align-items:center;gap:6px}
.preview-lab::after{content:"";flex:1;height:2px;background:var(--ink)}
.submit{width:100%;font-size:19px;padding:12px}
.btn[disabled]{opacity:.5;cursor:default}
.err{font-size:12.5px;font-weight:700;color:var(--ink);background:var(--white);border:2.5px solid var(--ink);border-left-width:8px;padding:6px 10px;margin:0}
.err:empty{display:none}
.card.preview{pointer-events:none}

/* ボット確認（Turnstile）。チェックが必要なときだけ出る */
.ts-box{position:fixed;left:50%;top:50%;transform:translate(-50%,-50%);z-index:30;display:none;background:var(--white);border:3px solid var(--ink);border-radius:14px;box-shadow:0 0 0 100vmax rgba(17,17,17,.55);padding:14px 14px 12px;max-width:calc(100vw - 24px)}
.ts-box.show{display:block}
.ts-box::before{content:"ボットでないことの確認：下のチェックを押してください";display:block;font-weight:700;font-size:14px;margin-bottom:8px;line-height:1.5}

/* ---------- 登録・ログイン ---------- */
.hero-sfx{font-family:var(--f-sfx);font-weight:700;font-size:40px;line-height:1;transform:rotate(-4deg);margin:4px 0 -6px;
  -webkit-text-stroke:1px var(--ink);color:var(--white);text-shadow:3px 3px 0 var(--ink)}
.h1{font-family:var(--f-display);font-weight:700;font-size:22px;line-height:1.3;margin:0}
.perks{list-style:none;margin:0;padding:0;border:3px solid var(--ink);background:var(--white);box-shadow:4px 4px 0 var(--tone)}
.perks li{display:flex;gap:10px;align-items:baseline;padding:8px 10px;border-bottom:2px solid var(--ink);font-size:13px;font-weight:700}
.perks li:nth-child(even){background:#f4f4f2}
.perks li:last-child{border-bottom:0}
.perks b{font-family:var(--f-display);font-weight:700;font-size:13px;flex:none;width:7.5em}
.perks em{font-style:normal;font-weight:700;font-size:15px;background:var(--ink);color:var(--white);padding:0 4px}
#intro{padding-bottom:0}
.step{padding-top:6px}
.oauth{display:flex;flex-direction:column;gap:10px}
.oauth .btn{display:flex;align-items:center;justify-content:center;gap:10px;font-size:16px;padding:10px 14px}
.oauth .pv{font-family:var(--f-body);font-weight:700;width:24px;height:24px;border:2px solid var(--ink);display:grid;place-items:center;font-size:14px;line-height:1}
.or{display:flex;align-items:center;gap:8px;font-weight:700;font-size:12px;color:var(--muted)}
.or::before,.or::after{content:"";flex:1;height:2px;background:#c2c2be}
.sub{margin:-4px 0 0;text-align:center;font-size:13px;font-weight:700}
.sub a{font-weight:700}
.linkish{border:0;background:none;padding:0;font-weight:700;text-decoration:underline;font-size:13px}
.lead{margin:0;font-size:13.5px;font-weight:700;line-height:1.65}
.sent{border:3px solid var(--ink);background:#f4f4f2;padding:10px 12px;font-size:13px;font-weight:700;line-height:1.65;display:flex;flex-direction:column;gap:4px}
.sent b{font-weight:700;word-break:break-all}
.sent span{color:var(--muted)}
.sent strong{color:var(--ink)}
.field input#code{font-size:24px;letter-spacing:.3em;text-align:center;font-variant-numeric:tabular-nums}
.acts2{display:flex;gap:8px}
.acts2 .btn{flex:1;font-size:13px;padding:7px 8px}
.check{display:flex;align-items:center;gap:6px;font-size:13px;font-weight:700}
.check input{width:18px;height:18px;accent-color:var(--ink)}
.steps{display:flex;border:2.5px solid var(--ink);font-size:12px;font-weight:700}
.steps span{flex:1;text-align:center;padding:4px 0;background:#e1e1de;color:#5b5b58}
.steps span + span{border-left:2.5px solid var(--ink)}
.steps span.cur{background:var(--ink);color:var(--white)}
.done-box{border:3px solid var(--ink);background:var(--ink);color:var(--white);padding:16px 14px;display:flex;flex-direction:column;gap:6px;box-shadow:5px 5px 0 var(--tone)}
.done-box b{font-family:var(--f-display);font-weight:700;font-size:22px}
.done-box span{font-size:13px;font-weight:700;line-height:1.6;word-break:break-all}
.done-box span:empty{display:none}
.btn.submit + .btn{margin-top:-6px}

/* ---------- 規約・プライバシーポリシー ---------- */
.doc{padding:16px 18px 32px;font-size:13.5px;line-height:1.8}
.doc h1{font-family:var(--f-display);font-weight:700;font-size:22px;margin:0 0 12px}
.doc h2{font-family:var(--f-display);font-weight:700;font-size:16px;margin:24px 0 6px;padding-bottom:2px;border-bottom:2px solid var(--ink)}
.doc p,.doc ul{margin:6px 0}
.doc ul{padding-left:1.3em}
.doc li{margin:3px 0}
.doc .date{margin-top:24px;color:var(--muted);font-weight:700;font-size:12px}
.doc .todo{background:#e1e1de;padding:0 4px;font-weight:700}
.agree{margin:-6px 0 0;font-size:11.5px;font-weight:700;color:var(--muted);text-align:center}
.agree a{color:var(--ink);font-weight:700}
.foot-links{display:flex;gap:16px;justify-content:center;font-size:12px;font-weight:700;margin:8px 0 24px}

/* ---------- 投稿・マイページ・登録・ログイン（画像案 docs/design/参考資料/02〜05） ---------- */
:root{
  --g1:#f4f4f2;--g2:#e1e1de;--g3:#c2c2be;--g4:#8c8c88;--g5:#5b5b58;
  --dots-gray:radial-gradient(var(--g4) 26%,transparent 29%) 0 0/5px 5px;
  --ticks-l:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='none' stroke='%23111' stroke-width='2.2' stroke-linecap='round'%3E%3Cpath d='M4 3l5 5M2 10.5h7M4 17.5l4.5-4'/%3E%3C/svg%3E");
  --ticks-r:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='none' stroke='%23111' stroke-width='2.2' stroke-linecap='round'%3E%3Cpath d='M16 3l-5 5M18 10.5h-7M16 17.5l-4.5-4'/%3E%3C/svg%3E");
  --ticks-l-w:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='none' stroke='%23fff' stroke-width='2.2' stroke-linecap='round'%3E%3Cpath d='M4 3l5 5M2 10.5h7M4 17.5l4.5-4'/%3E%3C/svg%3E");
  --ticks-r-w:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='none' stroke='%23fff' stroke-width='2.2' stroke-linecap='round'%3E%3Cpath d='M16 3l-5 5M18 10.5h-7M16 17.5l-4.5-4'/%3E%3C/svg%3E");
}
.app-sub{background:var(--paper)}
.app-sub .appbar{background:var(--paper);padding-block:4px;padding-top:max(4px,env(safe-area-inset-top));gap:10px}
.app-sub .appbar .back{border:0;background:transparent;width:34px;height:40px}
.app-sub .appbar .back svg{width:26px;height:26px}
.app-sub .appbar .bar{flex:none;width:2px;height:28px;background:var(--ink)}
.sub-logo{display:block;flex:1;min-width:0;height:52px;max-width:290px;margin:0 auto;object-fit:cover;mix-blend-mode:multiply;transform:translateX(-22px)}
.app-sub .screen{background:var(--paper)}

/* 見出し：集中線＋ギザギザの吹き出し＋下の網点の雲 */
.page-hero{position:relative;overflow:hidden;display:flex;align-items:center;justify-content:center;gap:4px;min-height:150px;padding:16px 12px 24px;border-bottom:2.5px solid var(--ink);background:var(--paper)}
.page-hero::before{content:"";position:absolute;inset:-40% -10%;pointer-events:none;
  background:repeating-conic-gradient(from 0deg at 50% 50%,var(--ink) 0 .55deg,transparent .55deg 5deg);
  -webkit-mask:radial-gradient(ellipse 52% 46% at 50% 50%,transparent 62%,#000 80%);mask:radial-gradient(ellipse 52% 46% at 50% 50%,transparent 62%,#000 80%)}
.page-hero::after{content:"";position:absolute;left:0;right:0;bottom:0;height:56px;pointer-events:none;background:var(--dots-gray);
  -webkit-mask:radial-gradient(circle at 4% 100%,#000 44px,transparent 45px),radial-gradient(circle at 17% 108%,#000 34px,transparent 35px),radial-gradient(circle at 96% 100%,#000 46px,transparent 47px),radial-gradient(circle at 83% 110%,#000 32px,transparent 33px);
  mask:radial-gradient(circle at 4% 100%,#000 44px,transparent 45px),radial-gradient(circle at 17% 108%,#000 34px,transparent 35px),radial-gradient(circle at 96% 100%,#000 46px,transparent 47px),radial-gradient(circle at 83% 110%,#000 32px,transparent 33px)}
.hero-bubble{position:relative;z-index:1;flex:0 1 auto;min-width:0;padding:24px 34px 26px;text-align:center}
.hero-bubble > svg{position:absolute;inset:0;width:100%;height:100%;overflow:visible}
.hero-bubble path{fill:var(--white);stroke:var(--ink);stroke-width:2.5;stroke-linejoin:round;vector-effect:non-scaling-stroke}
.hero-bubble h1{position:relative;margin:0;font-weight:700;font-size:40px;line-height:1.2;letter-spacing:.02em;white-space:nowrap}
.hero-bubble p{position:relative;margin:4px 0 0;font-weight:700;font-size:13px;white-space:nowrap}
.hero-bubble p.rule::before,.hero-bubble p.rule::after{content:"";display:inline-block;width:14px;height:2px;background:var(--ink);vertical-align:middle;margin:0 8px}
.page-hero.with-art{justify-content:flex-start;padding-right:0}
.page-hero.with-art .hero-bubble{text-align:left;padding:22px 30px 24px 26px}
.page-hero.with-art h1{font-size:28px;line-height:1.3;transform:rotate(-3deg)}
.page-hero.with-art p{font-size:12px}
.hero-art{position:relative;z-index:1;flex:0 0 38%;width:38%;max-width:180px;margin-left:-18px;mix-blend-mode:multiply}
@media(max-width:360px){
  .hero-bubble h1{font-size:32px}
  .page-hero.with-art h1{font-size:23px}
  .hero-bubble p{font-size:11px}
}

/* 角丸の枠 */
.form.sub-form{padding:14px 14px 22px;gap:12px}
.panel{position:relative;border:2.5px solid var(--ink);border-radius:14px;background:var(--white);padding:12px 14px}
.panel-row{display:flex;align-items:center;gap:12px}
.panel-row > .lab{flex:none;font-weight:700;font-size:17px}
.app-sub .field > label,.app-sub .field > .lab{font-size:17px}
.app-sub .field > label small{font-size:14px;color:var(--ink)}
.app-sub .field textarea,.app-sub .field input[type=text],.app-sub .field input[type=email],.app-sub .field input[type=password],.app-sub .field input[type=datetime-local]{border:2px solid var(--ink);border-radius:10px;padding:10px 12px;font-size:17px}
.app-sub .field textarea{height:56px}
.app-sub ::placeholder{color:var(--g4);font-weight:400}
.app-sub .seg{flex:1;border:2px solid var(--ink);border-radius:10px}
.app-sub .seg button{position:relative;padding:8px 0;font-size:16px;background:transparent}
.app-sub .seg button:first-child{border-radius:8px 0 0 8px}
.app-sub .seg button:last-child{border-radius:0 8px 8px 0}
.app-sub .seg button[aria-pressed="true"],.chips button[aria-pressed="true"]{background:var(--ink);color:var(--white)}
.app-sub .seg button[aria-pressed="true"]::after,.chips button[aria-pressed="true"]::after{content:"";position:absolute;bottom:-8px;left:calc(50% - 7px);border-left:7px solid transparent;border-right:7px solid transparent;border-top:7px solid var(--ink)}
.chips{flex:1;display:flex;gap:6px;min-width:0}
.chips button{position:relative;flex:1;min-width:0;border:2px solid var(--ink);border-radius:10px;background:var(--white);padding:7px 0;font-weight:700;font-size:14px;white-space:nowrap}
@media(max-width:360px){.chips button{font-size:12px}.panel-row > .lab{font-size:15px}}
.app-sub .opts{gap:10px}
.app-sub .opt{gap:10px}
.num{flex:none;width:32px;height:32px;border:2px solid var(--ink);border-radius:50%;display:grid;place-items:center;overflow:hidden}
.num b{display:grid;place-items:center;width:20px;height:20px;border-radius:50%;background:var(--white);font-size:15px;line-height:1}
.num.p0 b{background:transparent;color:var(--white)}
.dead-text{font-weight:700;font-size:12px;color:var(--g5)}
.app-sub #pEvent{margin-top:4px}

/* 両脇に効果線を付けた一行 */
.ticks{display:flex;align-items:center;justify-content:center;gap:8px;margin:0;font-weight:700;font-size:14px;text-align:center}
.ticks::before,.ticks::after{content:"";flex:none;width:18px;height:18px;background:var(--ticks-l) center/contain no-repeat}
.ticks::after{background-image:var(--ticks-r)}
.fine{margin:-6px 0 0;font-size:11.5px;font-weight:700;color:var(--g5);text-align:center;line-height:1.6}

/* プレビュー（一覧での見え方） */
.panel-tab{position:absolute;top:-2.5px;left:-2.5px;z-index:2;background:var(--ink);color:var(--white);font-weight:700;font-size:14px;padding:3px 22px 3px 14px;border-radius:14px 0 0 0;clip-path:polygon(0 0,100% 0,calc(100% - 10px) 100%,0 100%)}
.preview-panel{padding:26px 6px 4px;overflow:hidden}
.preview-panel::before{content:"";position:absolute;inset:0;pointer-events:none;opacity:.1;
  background:repeating-conic-gradient(from 0deg at 50% 50%,var(--ink) 0 .8deg,transparent .8deg 6deg);
  -webkit-mask:radial-gradient(ellipse 60% 55% at 50% 50%,transparent 70%,#000 90%);mask:radial-gradient(ellipse 60% 55% at 50% 50%,transparent 70%,#000 90%)}
.preview-panel .card-home{border:0;box-shadow:none;background:transparent;padding:6px 8px}

/* 大きな丸いボタン */
.pill{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;min-height:56px;border:2px solid var(--ink);border-radius:30px;background:var(--ink);color:var(--white);font-weight:700;font-size:22px;line-height:1.2;text-decoration:none;text-align:center;padding:6px 18px}
.pill.ghost{background:var(--white);color:var(--ink)}
.pill.sm{min-height:46px;font-size:17px}
.pill:active{transform:translateY(2px)}
.pill[disabled]{opacity:.45;cursor:default;transform:none}
.pill.sparks::before,.pill.sparks::after{content:"";flex:none;width:22px;height:22px;background:var(--ticks-l-w) center/contain no-repeat}
.pill.sparks::after{background-image:var(--ticks-r-w)}
.pill-wrap{position:relative;padding:0 28px}
.pill-wrap::before,.pill-wrap::after{content:"";position:absolute;top:50%;width:22px;height:30px;transform:translateY(-50%);background:var(--ticks-l) center/contain no-repeat}
.pill-wrap::before{left:0}
.pill-wrap::after{right:0;background-image:var(--ticks-r)}
.quota{margin:-4px 0 0;text-align:center;font-weight:700;font-size:13px}
.quota:empty{display:none}

/* 下のナビ（お題一覧・投稿・マイページ） */
.tabbar{flex:none;display:flex;gap:8px;padding:6px 10px max(6px,env(safe-area-inset-bottom));border-top:2.5px solid var(--ink);background:var(--paper)}
.tabbar a{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;min-height:54px;border-radius:12px;font-weight:700;font-size:12px;text-decoration:none}
.tabbar svg{width:26px;height:26px}
.tabbar a[aria-current="page"]{background:var(--ink);color:var(--white)}

/* マイページ */
.me-wrap{padding:14px 14px 22px;display:flex;flex-direction:column;gap:12px}
.acct{padding-top:0;overflow:hidden}
.acct-head{margin:0 -14px 12px;padding:8px 0 0 10px;height:46px;background:var(--dots-gray);border-bottom:0}
.tab-lab{display:inline-block;background:var(--ink);color:var(--white);font-weight:700;font-size:18px;line-height:1.2;padding:5px 30px 5px 14px;border-radius:8px 0 0 8px;clip-path:polygon(0 0,100% 0,calc(100% - 12px) 100%,0 100%)}
.acct-row{display:flex;align-items:center;gap:12px;min-width:0;padding:0 2px}
.acct-row .bar,.acct-links .bar{flex:none;width:2px;height:24px;background:var(--ink)}
.pill-tag{flex:none;border:2px solid var(--ink);border-radius:20px;padding:2px 16px;font-weight:700;font-size:16px;background:var(--white)}
.acct-mail{min-width:0;font-weight:700;font-size:17px;overflow-wrap:anywhere}
.acct-meta{margin:8px 2px 0;font-weight:700;font-size:12px;color:var(--g5)}
.acct-links{display:flex;align-items:center;justify-content:space-around;gap:8px;margin:12px -14px 0;padding:10px 8px 2px;border-top:1.5px solid var(--ink)}
.acct-links a,.acct-links button{border:0;background:none;padding:2px 4px;font-weight:700;font-size:15px;text-decoration:none;white-space:nowrap}
.acct-links a::after,.acct-links button::after{content:"›";margin-left:8px;font-size:20px;line-height:1}
.acct .why{margin-top:10px}
.acct-acts{display:flex;gap:8px;margin-top:12px}
.acct-acts .pill{flex:1}
.sec-head{display:flex;align-items:center;gap:8px;margin:12px 0 0;font-weight:700;font-size:23px}
.sec-head::before{content:"";flex:none;width:22px;height:22px;margin-top:-14px;background:var(--ticks-l) center/contain no-repeat;transform:rotate(15deg)}
.sec-head::after{content:"";flex:1;height:2px;background:var(--ink);margin-left:12px}
.my-cards{display:flex;flex-direction:column;gap:12px}
.my-card{display:flex;flex-direction:column;gap:10px;padding:14px}
.my-head{display:flex;align-items:center;gap:10px;min-width:0}
.st-tag{flex:none;background:var(--ink);color:var(--white);font-weight:700;font-size:15px;padding:3px 16px 3px 12px;border-radius:6px 0 0 6px;clip-path:polygon(0 0,100% 0,calc(100% - 9px) 100%,0 100%)}
.st-tag.rejected{background:var(--hatch);color:var(--ink)}
.st-tag.rejected span{background:var(--white);padding:0 3px}
.st-tag.closed{background:var(--g5)}
.my-head h3{margin:0;min-width:0;font-weight:700;font-size:19px;line-height:1.35;overflow-wrap:anywhere}
.my-head h3 a{text-decoration:none}
.cpills{display:grid;grid-template-columns:repeat(var(--choices),minmax(0,1fr));gap:8px;padding:0 6px}
.cpills span{border:2px solid var(--ink);border-radius:6px;background:var(--white);transform:skewX(-14deg);text-align:center;font-weight:700;font-size:14px;padding:1px 6px;min-width:0}
.cpills span em{display:block;font-style:normal;transform:skewX(14deg);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ratio.round{height:34px;border-width:2px;border-radius:20px;overflow:hidden}
.ratio.round > div{border-right-width:1.5px}
.ratio.round .pct{left:50%;transform:translate(-50%,-50%);font-weight:700;font-size:18px;border:0;line-height:1.2;border-radius:3px;padding:0 3px}
.ratio.round .p0 .pct{color:var(--white);background:var(--ink)}
.my-stats{display:flex;align-items:center;justify-content:space-around;gap:8px;font-weight:700;font-size:13px;font-variant-numeric:tabular-nums}
.my-stats span{display:inline-flex;align-items:center;gap:5px}
.my-stats b{font-size:17px}
.my-stats svg{width:20px;height:20px}
.my-stats .bar{width:2px;height:20px;background:var(--ink)}
.checking{border:2px dashed var(--ink);border-radius:20px;background:var(--dots-gray),var(--white);text-align:center;font-weight:700;font-size:15px;padding:5px 10px}
.checking span{background:var(--white);padding:0 6px}
.my-card .why{font-size:12px;font-weight:700;color:var(--g5);border-left:4px solid var(--g3);padding-left:8px;margin:0}
.me-wrap .empty{margin:8px 0}
.foot-links.sep{gap:0;margin:2px 0 4px}
.foot-links.sep a{padding:0 14px}
.foot-links.sep a + a{border-left:2px solid var(--ink)}

/* 登録・ログイン */
.perks2{list-style:none;margin:0;padding:0;overflow:hidden;background:var(--white)}
.perks2 li{display:grid;grid-template-columns:44px 1fr auto;align-items:center;gap:8px;padding:9px 14px 9px 8px;border-top:2px solid var(--ink);font-weight:700;font-size:17px}
.perks2 li:first-child{border-top:0}
.perks2 li.wide{grid-template-columns:44px 1fr}
.perks2 svg{width:36px;height:24px;justify-self:center}
.perks2 .val{font-size:20px;font-variant-numeric:tabular-nums;white-space:nowrap;padding-left:14px;border-left:2px solid var(--ink)}
.perks2 li:last-child{background:radial-gradient(var(--g3) 26%,transparent 29%) 0 0/5px 5px,var(--white)}
.perks2 li:last-child span{background:var(--white)}
@media(max-width:360px){.perks2 li{font-size:14px}.perks2 .val{font-size:16px;padding-left:8px}}
.chev{display:flex;align-items:center;justify-content:center;gap:4px}
.chev > span{position:relative;flex:1;max-width:124px;padding:6px 16px 6px 8px;text-align:center;font-weight:700;font-size:14px;white-space:nowrap}
.chev > span svg{position:absolute;inset:0;width:100%;height:100%}
.chev > span path{fill:var(--white);stroke:var(--ink);stroke-width:2;vector-effect:non-scaling-stroke}
.chev > span b{position:relative}
.chev > span.cur path{fill:var(--ink)}
.chev > span.cur b{color:var(--white)}
.chev > i{font-style:normal;font-weight:700}
.app-sub .oauth{gap:10px}
.app-sub .oauth .btn{min-height:54px;border-width:2px;border-radius:12px;box-shadow:none;font-size:19px;gap:0;padding:8px 14px}
.app-sub .oauth .btn:active{transform:translateY(2px)}
.app-sub .oauth .pv{width:auto;height:auto;border:0;display:flex;align-items:center;padding-right:16px;margin-right:16px;border-right:2px solid var(--ink)}
.app-sub .oauth .pv svg{width:28px;height:28px}
.app-sub .or{color:var(--ink);font-size:14px}
.app-sub .or::before,.app-sub .or::after{height:1.5px;background:var(--ink)}
.app-sub .agree{margin:-4px 0 0;font-size:13px;color:var(--ink)}
.app-sub .agree a{text-underline-offset:4px}
.to-other{margin:2px 0 0;text-align:center;font-weight:700;font-size:15px;padding:10px 12px}
.to-other a{font-size:18px;margin-left:4px;text-underline-offset:4px}
.pw-wrap{position:relative}
.pw-wrap input{padding-right:50px!important}
.pw-eye{position:absolute;right:6px;top:50%;transform:translateY(-50%);width:40px;height:40px;border:0;background:none;display:grid;place-items:center;padding:0}
.pw-eye svg{width:28px;height:28px}
.pw-eye[aria-pressed="true"] .slash{display:inline}
.pw-eye .slash{display:none}
.forgot-link{margin:-2px 0 0;text-align:center}
.forgot-link .linkish{font-size:15px;text-underline-offset:4px}
.first-time{display:flex;flex-direction:column;align-items:center;gap:8px;text-align:center;padding:14px 18px 16px;overflow:hidden}
.first-time::before,.first-time::after{content:"";position:absolute;top:0;width:90px;height:70px;pointer-events:none;background:var(--dots-gray);
  -webkit-mask:linear-gradient(to bottom,#000,transparent);mask:linear-gradient(to bottom,#000,transparent)}
.first-time::before{left:0;clip-path:polygon(0 0,100% 0,0 100%)}
.first-time::after{right:0;clip-path:polygon(0 0,100% 0,100% 100%)}
.first-time .ticks{position:relative;z-index:1;font-size:22px;gap:12px}
.first-time .ticks::before,.first-time .ticks::after{width:24px;height:24px}
.first-time p{position:relative;margin:0;font-weight:700;font-size:14px}
.first-time small{position:relative;font-weight:700;font-size:11.5px;color:var(--g5)}
.first-time .pill{position:relative;margin-top:2px}
.app-sub .note{border-radius:10px}
.app-sub .note.inv{border-radius:10px}
.app-sub .sent{border-radius:12px;border-width:2.5px}
.app-sub .err{border-radius:8px}
.app-sub .done-box{border-radius:14px}
.sub-home{flex:1;min-width:0;display:flex}
.hero-bubble h1.sm{font-size:28px}
.app-sub .steps{border-width:2px;border-radius:10px;overflow:hidden}
.app-sub .steps span + span{border-left-width:2px}
.my-card .posted{margin:0;font-size:11px;font-weight:700;color:var(--g5)}
.hero-art{height:auto}
.hero-bubble{flex:none;max-width:100%}
.page-hero.with-art .hero-bubble{flex:1 1 auto;min-width:0}
.hero-bubble h1{white-space:normal}
.hero-bubble p{white-space:normal}
.hero-bubble{padding:34px 46px 36px}
.page-hero{min-height:170px}
.page-hero.with-art .hero-bubble{padding:32px 42px 34px 40px;flex:0 1 62%}
.page-hero.with-art h1{font-size:25px}
.hero-bubble h1.sm{font-size:26px}
.hero-bubble p.rule::before,.hero-bubble p.rule::after{display:none}
@media(max-width:360px){.page-hero.with-art h1{font-size:20px}.hero-bubble{padding-inline:36px}}
.page-hero.with-art .hero-bubble{flex:1 1 0;min-width:0;padding:30px 30px 32px;text-align:center}
.page-hero.with-art h1{font-size:22px}
.page-hero.with-art p{font-size:11px}
.hero-art{flex:0 0 30%;width:30%}
@media(max-width:360px){.page-hero.with-art h1{font-size:18px}.page-hero.with-art .hero-bubble{padding-inline:22px}}
.app-home .tabbar{padding-inline:10px}
.stuck-msg{margin:8px 0 0;font-size:13px;font-weight:700;line-height:1.6}
.q-box #stuckRetry{margin-top:12px;width:100%}

/* ---------- シェア（docs/share-spec.md）：カードのボタン、マイページのボタン、シェアシート ---------- */
.card-wrap{position:relative}
.card-share{position:absolute;right:9px;bottom:9px;z-index:2;width:30px;height:30px;padding:0;border:2px solid var(--ink);border-radius:50%;background:var(--white);color:var(--ink);display:grid;place-items:center}
.card-share svg{width:15px;height:15px}
.card-share::after{content:"";position:absolute;inset:-6px} /* 見た目は小さいまま、指で押せる範囲を広げる */
.card-share:active{transform:translateY(2px)}
.card-wrap.home .card-share{right:10px;bottom:10px;width:34px;height:34px}
.card-wrap.home .card-share svg{width:16px;height:16px}
/* ボタンの分だけ、カードの下の行（タップ数・残り時間）を左に寄せる */
.card-wrap .card .stats{padding-right:38px}
.card-wrap.home .card .stats{padding-right:42px}
.my-foot{display:flex;align-items:center;justify-content:space-between;gap:10px}
.my-share{flex:none;display:inline-flex;align-items:center;gap:6px;border:2px solid var(--ink);border-radius:20px;background:var(--white);padding:3px 14px 3px 10px;font-weight:700;font-size:14px;line-height:1.5}
.my-share svg{width:16px;height:16px}
.my-share:active{transform:translateY(2px)}
/* お題を投稿した直後の案内（.first の黒い帯に、白いボタンを足す） */
.first .go{background:var(--white);color:var(--ink);border-color:var(--white)}

.sheet{position:absolute;inset:0;z-index:20;display:flex;flex-direction:column;justify-content:flex-end}
.sheet-back{position:absolute;inset:0;background:rgba(17,17,17,.55)}
.sheet-body{position:relative;display:flex;flex-direction:column;gap:12px;max-height:92%;overflow-y:auto;padding:14px 16px max(18px,env(safe-area-inset-bottom));
  background:var(--paper);border-top:3px solid var(--ink);border-radius:20px 20px 0 0;animation:sheet-up .18s ease-out}
@keyframes sheet-up{from{transform:translateY(28px);opacity:0}to{transform:none;opacity:1}}
.sheet-head{display:flex;align-items:center;justify-content:space-between;gap:8px}
.sheet-tab{display:inline-block;background:var(--ink);color:var(--white);font-weight:700;font-size:17px;line-height:1.2;padding:5px 28px 5px 14px;border-radius:8px 0 0 8px;clip-path:polygon(0 0,100% 0,calc(100% - 12px) 100%,0 100%)}
.sheet-x{flex:none;width:36px;height:36px;padding:0;border:2px solid var(--ink);border-radius:50%;background:var(--white);font-size:22px;line-height:1}
.sheet-text{margin:0;border:2px solid var(--ink);border-radius:12px;background:var(--white);padding:10px 12px;font:inherit;font-size:12.5px;font-weight:700;line-height:1.6;color:var(--g5);
  white-space:pre-wrap;overflow-wrap:anywhere;max-height:15em;overflow-y:auto}
.sheet-btns{display:flex;flex-direction:column;gap:10px}
.sheet .pill{min-height:52px;font-size:18px}
.sheet .pill svg{width:22px;height:22px;flex:none}
.sheet-note{margin:0;text-align:center;font-weight:700;font-size:11.5px;color:var(--g5)}
@media (prefers-reduced-motion: reduce){.sheet-body{animation:none}}

/* ---------- 状態ページ：404・登録の確認（画像案 09・12）。飾りは docs/design/参考資料/パーツ の素材を public/img/parts に軽くしたもの ---------- */
.appbar.center{justify-content:center}
.appbar.center .sub-home{flex:none;display:block}
.appbar.center .sub-logo{display:block;flex:none;width:290px;max-width:100%;margin:0;transform:none}
.app-sub .status-screen{display:flex;flex-direction:column;background:var(--white)}
/* 左上の網点：ヘッダーから本文の上まで */
.app-status{background:var(--white)}
.app-status::before{content:"";position:absolute;z-index:0;top:0;left:0;width:min(36%,140px);aspect-ratio:480/451;pointer-events:none;background:url(/img/parts/halftone-fade.webp) 0 0/100% 100% no-repeat;opacity:.9}
.app-status .appbar{position:relative;z-index:1;background:transparent}
.app-sub.app-status .status-screen{position:relative;z-index:1;background:transparent}
.status-body{position:relative;isolation:isolate;flex:1 0 auto;display:flex;flex-direction:column}
.status{flex:1 0 auto;display:flex;flex-direction:column;align-items:center;text-align:center;padding:clamp(40px,14dvh,120px) 22px 26px}
.status-icon{display:block;width:min(66%,250px);height:auto;overflow:visible}
.status-icon.spin{width:min(52%,200px)}
.spin-g{transform-box:fill-box;transform-origin:50% 50%;animation:st-spin 1.1s steps(12) infinite}
@keyframes st-spin{to{transform:rotate(360deg)}}
.status-title{margin:20px 0 0;font-weight:700;font-size:clamp(24px,8.2vw,32px);line-height:1.3;font-feature-settings:"palt";text-wrap:balance;word-break:auto-phrase}
.status-text{margin:10px 0 0;max-width:22em;font-weight:700;font-size:15px;line-height:1.65;font-feature-settings:"palt";text-wrap:balance;word-break:auto-phrase}
.status-text:empty{display:none}
.dot-rule{display:block;width:min(72%,240px);aspect-ratio:660/14;margin:12px auto 0;background:url(/img/parts/dotted-underline.webp) center/100% 100% no-repeat}
.status-actions{width:min(100%,330px);display:flex;flex-direction:column;gap:10px;margin-top:30px}
.status-actions.pinned{margin-top:auto;padding-top:30px;padding-bottom:58px}
.pill.go{position:relative;padding-inline:52px}
.pill.go::after{content:"";position:absolute;right:30px;top:50%;width:11px;height:11px;border:solid currentColor;border-width:0 3.5px 3.5px 0;transform:translateY(-50%) rotate(-45deg)}
/* 下の隅の網点の雲 */
.clouds::before,.clouds::after{content:"";position:absolute;z-index:-1;bottom:0;pointer-events:none;background:no-repeat 0 100%/100% 100%;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 124 70'%3E%3Cdefs%3E%3Cpattern id='d' width='6' height='6' patternUnits='userSpaceOnUse'%3E%3Ccircle cx='1.5' cy='1.5' r='1.15' fill='%23111'/%3E%3Ccircle cx='4.5' cy='4.5' r='1.15' fill='%23111'/%3E%3C/pattern%3E%3C/defs%3E%3Cpath d='M0 26.7A42 42 0 0 1 67.9 44.9A36 36 0 0 1 121.5 70H0Z' fill='url(%23d)'/%3E%3Cpath d='M0 26.7A42 42 0 0 1 67.9 44.9A36 36 0 0 1 121.5 70' fill='none' stroke='%23111' stroke-width='2.4' stroke-linejoin='round'/%3E%3C/svg%3E")}
.clouds::before{left:0;width:min(34%,132px);aspect-ratio:124/70}
.clouds::after{right:0;width:min(28%,108px);aspect-ratio:124/70;transform:scaleX(-1)}
/* 404：四隅の集中線と網点（上の2つを、180度回して下にも） */
.rays::before,.rays::after{content:"";position:absolute;z-index:-1;inset:0;pointer-events:none;opacity:.5;
  background:url(/img/parts/speed-corner.webp) 0 0/min(38%,150px) auto no-repeat,url(/img/parts/halftone-fade-r.webp) 100% 0/min(36%,140px) auto no-repeat}
.rays::after{transform:rotate(180deg)}
/* 404：からの吹き出し。輪郭は丸をいくつか重ねて作る */
.status-art{position:relative;width:min(52%,200px);aspect-ratio:170/140;margin-top:clamp(8px,3dvh,40px)}
.bubble{position:relative;display:block;width:100%;height:100%;overflow:visible}
.bubble .ol{fill:var(--ink);stroke:var(--ink);stroke-width:7;stroke-linejoin:round}
.bubble .fl{fill:var(--white)}
.bubble-shadow{position:absolute;left:-20%;right:-18%;top:44%;bottom:-8%;pointer-events:none;background:var(--dots-gray);
  -webkit-mask:radial-gradient(ellipse at 50% 50%,#000 38%,transparent 72%);mask:radial-gradient(ellipse at 50% 50%,#000 38%,transparent 72%)}
.bubble-rays{position:absolute;right:-24%;top:-16%;width:32%;height:auto;overflow:visible}
@media(prefers-reduced-motion:reduce){.spin-g{animation:none}}

/* ---------- 入力に集中する画面：パスワード・メール確認・再設定（画像案 08・14・15） ---------- */
/* 四隅の飾りは、ヘッダーの下の本文に付ける（上の2つを、180度回して下にも）。中身はその手前に出す */
.app-flow{background:var(--white)}
.app-flow .appbar{position:relative;z-index:1;background:transparent}
.app-sub.app-flow .screen{position:relative;z-index:1;display:flex;flex-direction:column;background:transparent}
.app-flow .screen::before,.app-flow .screen::after{content:"";position:absolute;z-index:-1;inset:0;pointer-events:none;opacity:.8}
.app-flow .screen::before{background:url(/img/parts/halftone-fade.webp) 0 0/min(36%,140px) auto no-repeat}
.app-flow .screen::after{transform:rotate(180deg);background:url(/img/parts/halftone-fade.webp) 0 0/min(36%,140px) auto no-repeat}
.app-flow .screen > *{flex:none}
.app-flow .screen > .status{flex:1 0 auto}
.app-flow .screen > .grow{flex:1 0 auto}
.sub-form.grow > .pill:last-child{margin-top:auto}
/* 見出し：大きな字。両脇に細い集中線 */
.head-hero{position:relative;isolation:isolate;padding:26px 22px 4px;text-align:center}
.head-hero h1{margin:0;font-weight:700;font-size:clamp(26px,8.6vw,34px);line-height:1.3;font-feature-settings:"palt";text-wrap:balance;word-break:auto-phrase}
.head-hero p{margin:12px auto 0;max-width:22em;font-weight:700;font-size:15px;line-height:1.7;font-feature-settings:"palt";text-wrap:balance;word-break:auto-phrase}
.head-hero p:empty{display:none}
.head-hero h1.long{font-size:clamp(20px,6.6vw,25px)}
.head-hero.rays-side h1{position:relative}
.head-hero.rays-side h1::before{content:"";position:absolute;z-index:-1;left:-22px;right:-22px;top:-22px;bottom:-22px;pointer-events:none;opacity:.55;
  background:repeating-conic-gradient(from 0deg at 50% 50%,var(--ink) 0 .55deg,transparent .55deg 5.2deg);
  -webkit-mask:linear-gradient(90deg,#000 0,rgba(0,0,0,.8) 8%,transparent 20%,transparent 80%,rgba(0,0,0,.8) 92%,#000 100%);mask:linear-gradient(90deg,#000 0,rgba(0,0,0,.8) 8%,transparent 20%,transparent 80%,rgba(0,0,0,.8) 92%,#000 100%)}
.head-hero.rays-side{padding-top:34px}
.head-hero .check-ico{display:block;margin:0 auto 6px;width:min(60%,220px);height:auto;overflow:visible}
/* 手順の目印：丸を線でつなぐ */
.steps2{position:relative;display:flex;list-style:none;margin:0 auto 18px;padding:0;max-width:260px}
.steps2::before{content:"";position:absolute;left:25%;right:25%;top:19px;height:3px;background:var(--ink)}
.steps2 li{position:relative;flex:1;display:flex;flex-direction:column;align-items:center;font-weight:700;font-size:13px;line-height:1.35}
.steps2 i{display:grid;place-items:center;width:40px;height:40px;margin-bottom:6px;border:2.5px solid var(--ink);border-radius:50%;background:var(--white);font-style:normal;font-size:19px;line-height:1}
.steps2 i svg{width:22px;height:22px}
.steps2 .cur i{background:var(--ink);color:var(--white)}
.steps2 small{font-size:12.5px;font-weight:700}
/* チェックボックス */
.app-flow .check{gap:12px;font-size:15px}
.app-flow .check input{appearance:none;-webkit-appearance:none;flex:none;width:26px;height:26px;margin:0;border:2.5px solid var(--ink);border-radius:7px;background:var(--white);display:grid;place-items:center;cursor:pointer}
.app-flow .check input:checked{background:var(--ink)}
.app-flow .check input:checked::after{content:"";width:6px;height:12px;border:solid var(--white);border-width:0 3px 3px 0;transform:translateY(-1px) rotate(45deg)}
.app-flow .lead{text-align:center;font-size:14.5px;line-height:1.75;font-feature-settings:"palt";text-wrap:pretty;word-break:auto-phrase}
.app-flow .field > label{justify-content:flex-start;gap:8px}
.app-flow .field > label small{font-family:var(--f-body);font-weight:400;font-size:14px;color:var(--ink)}
.app-flow .field > label small::before{content:"（"}
.app-flow .field > label small::after{content:"）"}
/* メールを送ったお知らせ：封筒の絵＋縦線＋文 */
.sent.mail{flex-direction:row;align-items:center;gap:14px;padding:14px 16px;border:2.5px solid var(--ink);border-radius:16px;background:var(--white);overflow:hidden;position:relative}
.sent.mail::after{content:"";position:absolute;right:0;top:0;width:90px;height:60px;pointer-events:none;background:var(--dots-gray);
  -webkit-mask:linear-gradient(to bottom left,#000,transparent 70%);mask:linear-gradient(to bottom left,#000,transparent 70%)}
.sent.mail .mail-ico{flex:none;width:58px;height:54px;padding-right:14px;border-right:2.5px solid var(--ink);box-sizing:content-box}
.sent.mail .mail-txt{position:relative;z-index:1;display:flex;flex-direction:column;gap:2px;min-width:0}
.sent.mail .mail-txt b{font-size:19px;line-height:1.35}
.sent.mail .mail-txt span{color:var(--ink);font-size:13.5px;word-break:break-all}
.sent.note-grey{flex-direction:row;align-items:center;gap:12px;border:0;border-radius:14px;background:var(--g2);padding:12px 14px;font-size:14px;color:var(--ink)}
.sent.note-grey svg{flex:none;width:34px;height:34px}
/* 数字の入力：両脇に効果線 */
.code-field{position:relative;padding:0 30px}
.code-field::before,.code-field::after{content:"";position:absolute;bottom:14px;width:22px;height:30px;background:var(--ticks-l) center/contain no-repeat}
.code-field::before{left:0}
.code-field::after{right:0;background-image:var(--ticks-r)}
.code-field > label{justify-content:center}
.stack{display:flex;flex-direction:column;gap:10px}
.stack .pill{min-height:50px;font-size:18px}
.pill.back{font-size:19px}
.app-flow .done-box{margin:0}
.chev{gap:0}
.chev > span{max-width:none;padding:7px 12px 7px 18px}
.chev > span + span{margin-left:-9px}
.chev > span:first-child{padding-left:10px}
.chev > span path{fill:var(--g2);stroke:none}
.chev > span.cur path{fill:var(--ink)}
.chev > i{display:none}

/* ---------- 規約・プライバシーポリシー（画像案 10・11）。文章は変えず、見出しと囲みだけ ---------- */
.app-doc .appbar{position:relative;overflow:hidden;background:var(--white)}
.app-doc .appbar::before,.app-doc .appbar::after{content:"";position:absolute;top:0;bottom:0;width:90px;pointer-events:none;opacity:.8;background:no-repeat 0 0/auto 140%}
.app-doc .appbar::before{left:0;background-image:url(/img/parts/halftone-fade.webp)}
.app-doc .appbar::after{right:0;background-image:url(/img/parts/halftone-fade-r.webp);background-position:100% 0}
.app-doc .appbar > *{position:relative;z-index:1}
.app-sub.app-doc .screen{background:var(--white)}
.appbar .back.boxed{border:2.5px solid var(--ink);border-radius:10px;background:var(--white);width:44px;height:40px}
.appbar .back.boxed svg{width:22px;height:22px}
.doc2{padding:14px 18px 36px;font-size:14.5px;line-height:1.85;text-wrap:pretty;word-break:auto-phrase}
.doc2 .back-link{display:inline-flex;align-items:center;gap:6px;font-weight:700;font-size:15px;text-decoration:none}
.doc2 .back-link svg{width:20px;height:20px}
.doc2 .todo{background:var(--g2);padding:0 4px;font-weight:700}
.doc2 .date{margin:22px 0 0;text-align:center;color:var(--g5);font-weight:700;font-size:12.5px}
.doc-title{position:relative;isolation:isolate;margin:4px 0 0;text-align:center}
.doc-title h1{margin:0;font-weight:700;font-size:clamp(30px,10vw,40px);line-height:1.3;font-feature-settings:"palt"}
.doc-title .dot-rule{width:min(60%,210px);margin-top:8px}
.doc-title:not(.framed)::before,.doc-title:not(.framed)::after{content:"";position:absolute;z-index:-1;top:6px;width:96px;height:64px;pointer-events:none;background:no-repeat 0 0/100% 100%}
.doc-title:not(.framed)::before{left:-18px;background-image:url(/img/parts/halftone-fade.webp)}
.doc-title:not(.framed)::after{right:-18px;background-image:url(/img/parts/halftone-fade-r.webp)}
.doc-title.framed{margin:10px 6px 4px}
.doc-title.framed h1{position:relative;padding:12px 14px 14px;border:2.5px solid var(--ink);border-radius:22px;background:var(--white);font-size:clamp(24px,7.6vw,31px)}
.doc-title.framed::before{content:"";position:absolute;z-index:-1;left:10px;right:-8px;top:10px;bottom:-10px;border-radius:22px;background:var(--dots-gray)}
.doc-title.framed::after{content:"";position:absolute;right:-12px;top:-18px;width:34px;height:26px;background:var(--ticks-r) center/contain no-repeat;transform:rotate(-12deg)}
.doc2 .doc-lead{margin:16px 0 18px;text-align:center;font-weight:700;font-feature-settings:"palt";text-wrap:pretty;word-break:auto-phrase}
.doc-sec{margin:0 0 16px}
.doc2 h2{margin:0 0 6px;padding:4px 14px;border:0;border-radius:10px;background:var(--g2);font-weight:700;font-size:18px;line-height:1.6}
.doc2 p,.doc2 ul{margin:6px 2px}
.doc2 ul{padding-left:1.4em}
.doc2 li{margin:4px 0}
.doc2 .doc-lead + .doc-sec,.doc2 .doc-lead + .doc-card{margin-top:0}
.doc-card{margin:0 0 12px;padding:12px 14px 10px;border:2px solid var(--g3);border-radius:16px;background:var(--white)}
.doc-card-head{display:flex;align-items:center;gap:12px;margin-bottom:4px}
.doc-card-head .ico{flex:none;display:grid;place-items:center;width:54px;height:54px;border-radius:13px;background:var(--g1)}
.doc-card-head .ico svg{width:34px;height:34px}
.doc2 .doc-card h2{flex:1;min-width:0;margin:0;padding:2px 0 2px 14px;border-left:2px solid var(--ink);border-radius:0;background:none;font-size:18px;line-height:1.4}
.doc-card p,.doc-card ul{margin:6px 0}

/* ---------- 結果発表（画像案 13）。選択肢ごとの横棒、合計、自分の連打、ボタン ---------- */
.res{gap:12px}
.res .rq{position:relative;display:grid;grid-template-columns:auto 1fr;align-items:center;gap:8px 10px;padding:12px 14px;border:2.5px solid var(--ink);border-radius:18px;background:var(--white);overflow:hidden;text-align:left}
.rq-tag{background:var(--ink);color:var(--white);font-weight:700;font-size:13px;line-height:1.5;padding:1px 12px;border-radius:7px}
.res .rq b{min-width:0;font-weight:700;font-size:20px;line-height:1.35;overflow-wrap:anywhere;text-wrap:pretty;word-break:auto-phrase}
.rq-art{grid-column:1/-1;justify-self:center;width:min(62%,210px);height:auto;mix-blend-mode:multiply;position:relative;z-index:1}
.res .rq.has-art::before,.res .rq.has-art::after{content:"";position:absolute;bottom:8px;width:92px;height:92px;pointer-events:none;background:var(--dots-gray);
  -webkit-mask:radial-gradient(circle,#000 18%,transparent 68%);mask:radial-gradient(circle,#000 18%,transparent 68%)}
.res .rq.has-art::before{left:-14px}
.res .rq.has-art::after{right:-14px}
.win em{position:relative;display:block;margin-bottom:2px;font-style:normal;font-family:var(--f-display);font-weight:700;font-size:13px;letter-spacing:.3em;text-indent:.3em;color:var(--white)}
/* 選択肢ごとの横棒：黒いラベル、模様の棒（選択肢の模様と同じ）、右に割合とタップ数。1位には王冠 */
.res .ranks{display:flex;flex-direction:column;gap:10px;border:0;padding:0}
.res .ranks li{position:relative;display:flex;align-items:stretch;min-height:62px;padding:0;gap:0;border:2px solid var(--ink);border-radius:16px;background:var(--white);color:var(--ink);font-size:inherit}
.res .ranks li.top{background:var(--white);color:var(--ink)}
.res .ranks li.top::before{content:"";position:absolute;left:-10px;top:-20px;width:36px;height:30px;background:var(--ticks-l) center/contain no-repeat;transform:rotate(42deg)}
.ranks .lab{flex:none;max-width:54%;display:flex;align-items:center;gap:8px;padding:6px 28px 6px 14px;border-radius:13px 0 0 13px;background:var(--ink);color:var(--white);clip-path:polygon(0 0,100% 0,calc(100% - 16px) 100%,0 100%)}
.ranks .lab svg{flex:none;width:28px;height:28px}
.ranks .lab em{flex:1;min-width:0;font-style:normal;font-size:20px;line-height:1.25;white-space:normal;overflow:visible;overflow-wrap:anywhere}
.ranks .track{flex:1;min-width:0;display:flex;align-items:center;margin-left:-8px}
.ranks .track i{display:block;height:54%;width:calc(var(--p) * 1%);min-width:0;border:0;clip-path:polygon(min(14px,40%) 0,100% 0,calc(100% - min(14px,40%)) 100%,0 100%)}
.ranks .track i.p0{background:var(--ink)}
.ranks .pc{flex:none;display:flex;flex-direction:column;align-items:flex-end;justify-content:center;padding:4px 14px 4px 10px;line-height:1.15;font-variant-numeric:tabular-nums}
.ranks .pc b{font-weight:700;font-size:28px}
.ranks .pc b small{width:auto;margin-left:1px;font-size:15px}
.ranks .pc span{font-size:12px;font-weight:700;white-space:nowrap}
/* 合計・参加：灰色の丸い札 */
.res .facts div{flex-direction:row;align-items:baseline;justify-content:center;gap:8px;padding:8px 10px;border:0;border-radius:22px;background:var(--g2);font-size:13px}
.res .facts b{font-size:21px}
/* あなたの戦績：網点で縁取った囲み */
.res .mybox{position:relative;overflow:hidden;gap:2px;padding:10px 16px 10px 62px;border:2px solid var(--ink);border-radius:16px;box-shadow:none;background:var(--white)}
.res .mybox::before{content:"";position:absolute;left:18px;top:50%;width:30px;height:30px;transform:translateY(-50%);
  background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%23111'%3E%3Ccircle cx='12' cy='8' r='4.5'/%3E%3Cpath d='M3.5 21c.6-4.6 4-7 8.5-7s7.9 2.4 8.5 7z'/%3E%3C/svg%3E") center/contain no-repeat}
.res .mybox::after{content:"";position:absolute;right:0;top:0;bottom:0;width:64px;pointer-events:none;background:var(--dots-gray);-webkit-mask:linear-gradient(to left,#000,transparent);mask:linear-gradient(to left,#000,transparent);opacity:.7}
.res .mybox > *{position:relative;z-index:1}
/* ボタン：どちらも黒い角丸 */
.res .row-btn{gap:10px}
.res .row-btn .btn,.res .row-btn .btn.ghost{display:flex;align-items:center;justify-content:center;gap:8px;min-height:58px;border-width:2px;border-radius:16px;box-shadow:none;background:var(--ink);color:var(--white);font-size:17px}
.res .row-btn [data-share-result]::before{content:"";flex:none;width:22px;height:22px;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23fff' stroke-width='2.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 3v12M7 8l5-5 5 5M5 13v7h14v-7'/%3E%3C/svg%3E") center/contain no-repeat}
.res .row-btn a.btn::after{content:"";flex:none;width:10px;height:10px;border:solid currentColor;border-width:0 3px 3px 0;transform:rotate(-45deg);margin-left:2px}
.res .next-lab{margin-top:4px}

/* ---------- 管理画面（画像案 07）。審査待ちの一覧。タブ・メニューは仕様にないので入れない ---------- */
.app-admin{background:var(--white);--burst:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 56 58'%3E%3Cpath d='M11.8 2.8L21.3 7.3L1.1 35.3ZM35.4 17.9L41.8 24.9L13.2 44.2ZM50.7 40.2L53.5 48.9L22 56Z' fill='%23111' stroke='%23111' stroke-width='1' stroke-linejoin='round'/%3E%3C/svg%3E")}
.app-admin .appbar{position:relative;overflow:hidden;background:var(--white)}
.app-admin .appbar::after{content:"";position:absolute;top:0;bottom:0;right:0;width:130px;pointer-events:none;opacity:.8;background:url(/img/parts/halftone-fade-r.webp) 100% 0/auto 150% no-repeat}
.app-admin .appbar > *{position:relative;z-index:1}
.app-sub.app-admin .screen{background:var(--white);padding:0 16px 32px;word-break:auto-phrase}
.app-admin .qnote span,.app-admin .qc-ai p,.app-admin .qc-ai dd{text-wrap:pretty}
.admin-head{padding:18px 2px 0}
.admin-head h1{margin:0;font-weight:700;font-size:clamp(30px,10vw,40px);line-height:1.25;font-feature-settings:"palt"}
.admin-head p{margin:6px 0 0;font-size:14.5px;line-height:1.7;font-feature-settings:"palt";word-break:auto-phrase}
/* AI審査の利用状況：枠の中に、今日と今月の棒 */
.ai-use{position:relative;margin-top:18px;padding:14px 16px 16px;border:2px solid var(--g3);border-radius:18px;background:var(--white);overflow:hidden}
.ai-use::after{content:"";position:absolute;right:18px;top:12px;width:32px;height:33px;pointer-events:none;background:var(--burst) center/contain no-repeat}
.ai-use-head{display:flex;align-items:center;gap:12px}
.ai-use-head svg{flex:none;width:44px;height:44px}
.ai-use-head h2{margin:0;padding-right:30px;font-size:clamp(17px,5.4vw,20px);line-height:1.3;font-weight:700}
.meter{margin-top:14px}
.meter p{margin:0}
.meter-top{display:flex;justify-content:space-between;align-items:baseline;gap:8px;font-size:14px;font-weight:700;line-height:1.5}
.meter-top small{font-size:13px;font-weight:400}
.meter-val{display:flex;flex-wrap:wrap;align-items:baseline;gap:0 8px;margin-top:2px}
.meter-val b{font-size:21px;line-height:1.35;font-variant-numeric:tabular-nums}
.meter-val span{font-size:13px}
.meter-bar{margin-top:6px;height:14px;border-radius:7px;background:var(--g2);overflow:hidden}
.meter-bar i{display:block;height:100%;border-radius:7px;background:var(--ink)}
/* 設定・上限のお知らせ */
.qnote{display:flex;align-items:flex-start;gap:10px;margin:14px 0 0;padding:10px 14px;border-radius:14px;background:var(--ink);color:var(--white);font-weight:700;font-size:13.5px;line-height:1.6}
.qnote svg{flex:none;width:22px;height:22px;margin-top:2px}
/* 「審査待ち　2件」の見出し */
.q-title{display:flex;align-items:center;gap:12px;margin:26px 0 12px}
.q-title svg{flex:none;width:34px;height:30px}
.q-title h2{margin:0;display:flex;align-items:baseline;gap:10px;font-size:26px;font-weight:700;line-height:1.2}
.q-title .cnt{font-size:1.3em;font-variant-numeric:tabular-nums}
.q-title i{flex:none;width:32px;height:33px;margin-top:-14px;background:var(--burst) center/contain no-repeat}
/* お題カード */
.qlist{display:flex;flex-direction:column;gap:16px}
.qcard{position:relative;display:flex;flex-direction:column;padding:12px 14px 14px;border:2px solid var(--ink);border-radius:20px;background:var(--white);overflow:hidden}
.qcard::after{content:"";position:absolute;right:0;top:0;width:104px;height:104px;pointer-events:none;opacity:.5;background:url(/img/parts/speed-corner.webp) 0 0/100% auto no-repeat;transform:scaleX(-1)}
.qcard > *{position:relative;z-index:1}
.qc-top{display:flex;flex-wrap:wrap;align-items:center;gap:6px 8px}
.qc-tag{background:var(--ink);color:var(--white);font-weight:700;font-size:13px;line-height:1.5;padding:1px 12px;border-radius:7px}
.qc-official{border:2px solid var(--ink);border-radius:7px;font-weight:700;font-size:12px;line-height:1.4;padding:0 8px}
.qc-id{margin-left:auto;font-size:13px;font-variant-numeric:tabular-nums;white-space:nowrap}
.qcard h3{margin:8px 0 0;padding-right:28px;font-size:clamp(20px,6.4vw,24px);line-height:1.4;font-weight:700;overflow-wrap:anywhere;text-wrap:pretty;word-break:auto-phrase}
.qc-lab{margin:12px 0 6px;font-weight:700;font-size:14px;line-height:1.4}
.qc-chips{display:flex;flex-wrap:wrap;gap:8px;margin:0;padding:0;list-style:none}
.qc-chips li{padding:3px 14px;border:1.5px solid var(--g4);border-radius:14px;background:var(--white);font-size:14px;line-height:1.5;overflow-wrap:anywhere}
.qc-dead{display:flex;align-items:center;gap:8px;margin:12px 0 0;padding-top:10px;border-top:1.5px solid var(--g2);font-size:14px;line-height:1.5}
.qc-dead svg{flex:none;width:22px;height:22px}
.qc-dead b{margin-right:6px}
.qc-meta{margin:2px 0 0;padding-left:30px;font-size:12.5px;color:var(--g5)}
/* AI判定：薄い灰色の囲み。右下に網点 */
.qc-ai{position:relative;margin-top:12px;padding:10px 14px 12px;border:1.5px solid var(--g3);border-radius:14px;background:var(--g1);overflow:hidden}
.qc-ai::after{content:"";position:absolute;right:0;bottom:0;width:96px;height:66px;pointer-events:none;background:var(--dots-gray);-webkit-mask:linear-gradient(to top left,#000,transparent 70%);mask:linear-gradient(to top left,#000,transparent 70%)}
.qc-ai > *{position:relative;z-index:1}
.qc-ai-head{display:flex;align-items:center;gap:10px}
.qc-ai-head svg{flex:none;width:34px;height:34px}
.qc-ai-head b{font-size:17px;font-weight:700}
.vd{padding:1px 20px;border-radius:12px;background:var(--g4);color:var(--white);font-weight:700;font-size:17px;line-height:1.5}
.vd.off{padding:0 16px;border:1.5px solid var(--g4);background:var(--white);color:var(--ink)}
.qc-ai dl{margin:8px 0 0;display:flex;flex-direction:column;gap:2px;font-size:14px;line-height:1.65}
.qc-ai dl > div{display:flex;gap:6px;align-items:baseline}
.qc-ai dt{flex:none;font-weight:700}
.qc-ai dt::after{content:"："}
.qc-ai dd{margin:0;min-width:0;overflow-wrap:anywhere}
.qc-ai dd small{margin-left:8px;font-size:12.5px}
.qc-ai .mdl{font-size:12px;color:var(--g5)}
.qc-ai p{margin:8px 0 0;font-size:14px}
/* ボタン：承認は大きな黒、却下と投稿者の停止は白 */
.qc-acts{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:14px}
.qc-acts .btn{display:flex;align-items:center;justify-content:center;min-height:50px;padding:6px 10px;border-width:2px;border-radius:16px;box-shadow:none;font-size:17px;line-height:1.3}
.qc-acts .btn:active{transform:translateY(2px)}
.qc-acts .qc-go{position:relative;grid-column:1/-1;min-height:58px;font-size:20px}
.qc-acts .qc-go::after{content:"";position:absolute;right:18px;top:50%;width:30px;height:31px;transform:translateY(-58%);background:var(--white);-webkit-mask:var(--burst) center/contain no-repeat;mask:var(--burst) center/contain no-repeat}
.qc-acts .btn.ghost:nth-child(2):last-child{grid-column:1/-1}
/* 空・読み込み中・入れないとき */
.q-empty{display:flex;flex-direction:column;align-items:center;gap:12px;padding:34px 12px 38px;border:2px dashed var(--g3);border-radius:18px;font-weight:700;font-size:15px;text-align:center;color:var(--g5)}
.q-empty svg{width:56px;height:50px;opacity:.35}
.q-empty p{margin:0}

/* 公式の候補：理由と出どころ、公式お題を手で出すフォーム、候補を直すフォーム */
.q-hint{margin:-4px 2px 14px;font-size:13px;line-height:1.7;color:var(--g5);text-wrap:pretty}
.qc-note{margin-top:12px;padding:10px 14px 12px;border:1.5px solid var(--g3);border-radius:14px;background:var(--g1);font-size:14px;line-height:1.65}
.qc-note b{font-size:15px}
.qc-note b::after{content:"："}
.qc-note p{display:inline;margin:0;overflow-wrap:anywhere;text-wrap:pretty}
.qc-note a{display:block;margin-top:6px;font-weight:700;font-size:13.5px;overflow-wrap:anywhere}
.off-new{margin-top:22px;border:2px solid var(--ink);border-radius:18px;background:var(--white);overflow:hidden}
.off-new > summary{display:flex;align-items:center;gap:10px;padding:13px 16px;font-weight:700;font-size:18px;line-height:1.4;cursor:pointer;list-style:none}
.off-new > summary::-webkit-details-marker{display:none}
.off-new > summary::before{content:"＋";flex:none;display:grid;place-items:center;width:28px;height:28px;border-radius:50%;background:var(--ink);color:var(--white);font-size:18px;line-height:1}
.off-new[open] > summary::before{content:"－"}
.off-new[open] > summary{border-bottom:1.5px solid var(--g2)}
.off-form{display:flex;flex-direction:column;gap:14px}
.off-new .off-form{padding:14px 16px 18px}
.off-form .field input[type=datetime-local]{margin-top:4px}
.off-form .field textarea{height:72px;line-height:1.5}
.off-form .field textarea[data-f="note"]{height:96px;font-size:15px;font-weight:400}
.off-form .fine{margin:0}
.off-acts{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.qc-edit{margin-top:10px}
.qc-edit .qc-acts{margin-top:2px}
