:root{font-family:Noto Sans JP,Yu Gothic,sans-serif;color:#f5f1e8;background:#090d13;font-synthesis:none}*{box-sizing:border-box}[hidden]{display:none!important}body{margin:0;min-height:100vh;background:radial-gradient(circle at 50% 0,#223044 0,#0c1119 46%,#07090d)}header{height:64px;padding:0 28px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #344252;background:#080b10dd}.brand{font-family:serif;font-size:25px;font-weight:800;color:#f3ce76;margin-right:12px}header small{letter-spacing:.18em;color:#8190a3}.session-controls{display:flex;align-items:center;gap:10px}.status{font-size:13px;padding:7px 12px;border-radius:20px}.online{background:#183d2a;color:#83e2a6}.offline{background:#422028;color:#ff9da8}main{max-width:1180px;margin:0 auto;padding:24px}.card{max-width:720px;margin:30px auto;padding:28px;border:1px solid #364454;border-radius:16px;background:#111822e8;box-shadow:0 20px 70px #0008}h1{margin-top:0;color:#f3ce76}h2{font-size:16px;color:#bbc6d4}.tabs{display:flex;gap:8px;margin-bottom:18px}button,input,select{font:inherit}.password-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;align-items:center}.password-row input,.password-row button{margin-top:6px}.password-row button{min-width:76px}button:disabled{cursor:not-allowed;opacity:.42}.square:disabled{cursor:not-allowed;opacity:1}button{border:1px solid #4a5a6d;border-radius:8px;background:#1b2633;color:#e9eef4;padding:9px 14px;cursor:pointer}button:hover{border-color:#d8b867}.primary,.tabs .active{background:linear-gradient(#d8b867,#a77b2d);border-color:#eccf85;color:#17120a;font-weight:700}.danger{border-color:#934653;color:#ffb5bf}label{display:block;color:#aeb9c7;margin:12px 0}.form-note{margin:0 0 14px;padding:10px 12px;border-left:3px solid #d8b867;background:#1a2430;color:#d9e1ea;font-size:14px}input,select{width:100%;margin-top:6px;padding:11px;border:1px solid #405064;border-radius:8px;background:#0b1119;color:#fff}.lobby-grid{display:grid;grid-template-columns:1fr 1fr;gap:22px}.profile-form{margin-bottom:22px;padding-bottom:20px;border-bottom:1px solid #344252}.profile-form label{display:inline-block;width:min(100%,360px);margin-right:8px}.profile-result{margin-left:10px;color:#83e2a6}.join-guidance{min-height:1.4em;margin:6px 0;color:#ff9da8;font-size:13px}.copy-result{color:#83e2a6;font-size:13px}.begin-match{width:100%;margin:10px 0 14px}.game-grid{display:grid;grid-template-columns:minmax(430px,690px) 1fr;gap:24px;align-items:start}.board-column{max-width:690px}.board-frame{display:grid;grid-template-columns:24px minmax(0,1fr) 24px;grid-template-rows:24px minmax(0,1fr) 24px;background:#111925}.file-labels{display:grid;grid-template-columns:repeat(9,minmax(0,1fr));align-items:center;text-align:center;color:#f3ce76;font-weight:700;font-variant-numeric:tabular-nums}.file-labels-top{grid-column:2;grid-row:1}.file-labels-bottom{grid-column:2;grid-row:3}.rank-labels{display:grid;grid-template-rows:repeat(9,minmax(0,1fr));align-items:center;text-align:center;color:#f3ce76;font-family:Yu Mincho,serif;font-weight:700}.rank-labels-left{grid-column:1;grid-row:2}.rank-labels-right{grid-column:3;grid-row:2}.board{grid-column:2;grid-row:2;display:grid;grid-template-columns:repeat(9,minmax(0,1fr));grid-template-rows:repeat(9,minmax(0,1fr));width:100%;aspect-ratio:1;border:3px solid #39240e;background:#c99a54;box-shadow:0 18px 50px #0009}.square{position:relative;display:grid;place-items:center;padding:0;border:0;border-radius:0;border-right:1px solid #5c3b18;border-bottom:1px solid #5c3b18;background:transparent;color:#201307;cursor:pointer;min-width:0;min-height:0;overflow:hidden}.square:has(.tendo-character){overflow:visible;z-index:2}.square:has(.target-character){z-index:4}.square.selected{background:#ffe28c}.square.danger-one{background:#e8c84f}.square.danger-many{background:#c84b42}.square.selected{box-shadow:inset 0 0 0 4px #fff0a6}.move-dot{position:absolute;z-index:3;inset:0;display:grid;place-items:center;color:#fff;font-size:clamp(26px,5vw,48px);font-weight:900;line-height:1;text-shadow:0 1px 4px #000,0 0 2px #000;pointer-events:none}.square.last{box-shadow:inset 0 0 0 3px #f6d25e}.piece{width:77%;height:84%;display:grid;place-items:center;clip-path:polygon(50% 0,92% 18%,86% 100%,14% 100%,8% 18%);background:linear-gradient(145deg,#f1cb86,#c18d41);border:1px solid #765020;font-family:Yu Mincho,serif;font-weight:900;font-size:clamp(20px,4.3vw,39px);filter:drop-shadow(0 2px 1px #0006)}.piece.enemy{transform:rotate(180deg);background:linear-gradient(145deg,#b87732,#6f3f1e);border-color:#492711;color:#fff;text-shadow:0 1px 3px #000,0 0 3px #000}.piece.promoted{color:#a21e19}.piece.long-name{font-size:clamp(18px,3vw,29px)}.promoted-stack{display:flex;flex-direction:column;align-items:center;justify-content:center;line-height:.82;letter-spacing:0}.hand{min-height:52px;padding:7px;display:flex;gap:7px;align-items:center;background:#101721;border-left:1px solid #354354;border-right:1px solid #354354}.hand-piece{padding:7px 11px;background:#bd8d4b;color:#211307;border-color:#e5bd78}.hand-piece.selected{outline:3px solid #f6d25e}.review-controls{display:flex;gap:8px;align-items:center;justify-content:center;flex-wrap:wrap;padding:12px;border:1px solid #354354;background:#111925}.review-controls[hidden]{display:none}.playerbar{display:flex;justify-content:space-between;min-height:48px;padding:10px 14px;background:#111925;border:1px solid #354354}.clock{font-variant-numeric:tabular-nums;font-size:22px;color:#f3ce76}.sidepanel{position:sticky;top:20px;padding:20px;border:1px solid #354354;border-radius:14px;background:#111822}.turn{padding:13px;text-align:center;border-radius:8px;background:#202c3a;color:#f3ce76;font-weight:700}.turn.your-turn{background:#274a35;color:#9cf0b8;box-shadow:inset 0 0 0 1px #43825d}.actions{display:flex;gap:8px;margin:14px 0}.new-match{width:100%;margin:0 0 14px}.messages{border-top:1px solid #344252;padding-top:12px}#messageList{height:240px;overflow:auto;background:#0b1017;padding:10px;border-radius:8px}.message{padding:7px 0;border-bottom:1px solid #273342;font-size:13px}#messageForm{display:flex;gap:7px}#messageForm input{margin:8px 0}.error{margin-top:12px;color:#ff9da8;white-space:pre-wrap}code{-webkit-user-select:all;user-select:all;color:#f3ce76}@media(max-width:820px){main{padding:10px}.game-grid{grid-template-columns:1fr}.sidepanel{position:static}.lobby-grid{grid-template-columns:1fr}.card{padding:18px}.piece{font-size:clamp(16px,7vw,34px)}}.action-message{margin:10px 0 12px;padding:10px 12px;border-radius:8px;background:#172334;border:1px solid #405064;color:#dce8f5;font-size:14px;line-height:1.55}.action-message.error{background:#2a171c;border-color:#8b4551;color:#ffbec6}.action-message.info{background:#153022;border-color:#3d7657;color:#a9e8bf}.vote-overlay{position:fixed;inset:0;z-index:1000;background:#000a;display:grid;place-items:center;padding:20px}.vote-dialog{width:min(520px,96vw);background:#111a25;border:1px solid #d0ad5c;border-radius:14px;box-shadow:0 24px 80px #000c;padding:24px}.vote-dialog h2{margin-top:0;color:#f3ce76;font-size:22px}.vote-summary{display:grid;gap:8px;margin:16px 0}.vote-summary>div{display:grid;grid-template-columns:150px 1fr;gap:12px;padding:11px 12px;background:#0b1119;border:1px solid #344252;border-radius:8px}.vote-summary span{color:#9dacbe}.vote-summary strong{color:#fff}.promotion-choices{display:flex;gap:10px;margin:14px 0}.promotion-choices button{flex:1}.promotion-choices .selected-choice{background:linear-gradient(#d8b867,#a77b2d);border-color:#eccf85;color:#17120a;font-weight:700}.vote-actions{display:flex;justify-content:flex-end;gap:10px}.admin-panel{border:1px solid #7b6b42;border-radius:10px;padding:12px;margin:12px 0;background:#fff7dbbf}.admin-panel h2{margin:0 0 8px;font-size:1rem}.leave-button{width:100%;margin:10px 0;border:1px solid #8a6f44;background:#fff8e8;color:#4d3920;font-weight:700}.role-banner{display:flex;gap:16px;align-items:center;padding:14px 16px;margin:14px 0 20px;border:1px solid #37475a;border-radius:10px;background:#111d29}.role-banner strong{color:#efc75e;font-size:1.05rem}.role-banner span{color:#aebdca;font-size:.9rem}.admin-layout{display:grid;grid-template-columns:minmax(240px,.75fr) minmax(420px,1.6fr);gap:18px;margin-top:20px}.management-list{display:grid;gap:10px}.management-card{border:1px solid #35475a;border-radius:10px;padding:14px;background:#101a25}.management-card.active{border-color:#d5a93d}.management-card h3{margin:0 0 8px}.management-meta{font-size:.88rem;color:#aebdca;line-height:1.5}.management-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}.join-url{word-break:break-all;color:#e7bd55;font-size:.82rem}.status-chip{display:inline-block;padding:3px 8px;border-radius:999px;background:#203246;color:#d7e2ec;font-size:.78rem}.event-feature{margin-top:8px;padding:8px 10px;border-left:3px solid #d5a93d;background:#182432;color:#cbd7e1;font-size:.86rem}@media(max-width:850px){.admin-layout{grid-template-columns:1fr}.role-banner{align-items:flex-start;flex-direction:column;gap:4px}}.admin-dashboard{display:grid;gap:22px;margin-top:20px}.admin-dashboard>section{border:1px solid #2d3d4d;border-radius:12px;padding:18px;background:#0e1822}.section-heading{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;margin-bottom:14px}.section-heading h2{margin-top:0}.admin-dashboard form{margin:14px 0 20px;padding:16px;border:1px solid #3b4c5e;border-radius:10px;background:#111d29}.admin-dashboard form[hidden]{display:none!important}#managedGroupOptions{display:grid;gap:8px}#managedGroupOptions[hidden]{display:none!important}@media(max-width:700px){.section-heading{flex-direction:column}.section-heading button{width:100%}}.admin-two-pane{grid-template-columns:minmax(260px,.72fr) minmax(520px,1.65fr);align-items:start}.holding-sidebar,.holding-main{border:1px solid #2d3d4d;border-radius:12px;padding:18px;background:#0e1822}.holding-sidebar{position:sticky;top:16px}.holding-sidebar .management-card{cursor:pointer}.holding-main .management-list{grid-template-columns:repeat(auto-fit,minmax(260px,1fr))}.public-page-note{margin:0 0 18px}.player-entry-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-top:18px}.entry-card,.public-holding{border:1px solid #2d3d4d;border-radius:12px;padding:18px;background:#0e1822}.entry-card h2{margin-top:0}.public-holding{margin-top:18px}.public-holding .management-list{grid-template-columns:repeat(auto-fit,minmax(250px,1fr))}@media(max-width:850px){.admin-two-pane,.player-entry-grid{grid-template-columns:1fr}.holding-sidebar{position:static}}.master-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:18px 0}.master-summary>div{border:1px solid #33465b;border-radius:10px;padding:16px;background:#0c1621;display:flex;flex-direction:column}.master-summary strong{font-size:1.8rem;color:#f0c45b}.master-summary span{color:#b9c8d8}.master-banner{border-color:#765f25}@media(max-width:800px){.master-summary,.admin-two-pane{grid-template-columns:1fr}}.master-hierarchy .holding-sidebar{max-height:calc(100vh - 180px);overflow:auto}.master-breadcrumb{margin:0 0 16px;padding:10px 12px;border-left:3px solid #d6ac45;background:#152231;color:#d9e3ed}.master-back-row{margin-bottom:14px}.master-back-row button{background:#182636}.master-hierarchy .holding-main>.management-list{margin-top:14px}.danger-link{border-color:#7b3b43!important;color:#ff9da8!important;background:#24161a!important}.danger-link:hover{background:#341b21!important}#lobby:has(#masterArea:not([hidden])){max-width:1440px;width:calc(100vw - 48px)}.master-hierarchy{grid-template-columns:minmax(360px,.9fr) minmax(700px,2.1fr);gap:24px}.master-hierarchy .holding-sidebar{max-height:none;overflow:visible}.master-hierarchy .holding-main{min-height:420px}@media(max-width:1050px){#lobby:has(#masterArea:not([hidden])){width:calc(100vw - 24px)}.master-hierarchy{grid-template-columns:1fr}.master-hierarchy .holding-sidebar{position:static}}body:has(#masterArea:not([hidden])) main{max-width:1680px;width:100%;padding:24px 32px}#lobby:has(#masterArea:not([hidden])){max-width:none;width:100%;margin:18px auto;padding:28px}.master-hierarchy{grid-template-columns:minmax(330px,420px) minmax(760px,1fr);gap:26px}.master-hierarchy .holding-main{min-height:520px}.master-organizer-form{margin:0!important;padding:24px!important}.master-organizer-fields{display:grid;grid-template-columns:repeat(2,minmax(260px,1fr));gap:14px 20px}.master-organizer-fields .wide-field{grid-column:1/-1}.organizer-contact-grid{display:grid;grid-template-columns:repeat(2,minmax(250px,1fr));gap:12px 22px;margin-top:14px}.organizer-contact-grid>div{display:flex;flex-direction:column;gap:4px;padding:10px 12px;border:1px solid #304255;border-radius:8px;background:#0b151f}.organizer-contact-grid span{font-size:.78rem;color:#91a3b6}.organizer-contact-grid strong{color:#e8eef4;font-weight:600;overflow-wrap:anywhere}.organizer-contact-grid .wide-contact{grid-column:1/-1}#masterOrganizerList .management-card{cursor:pointer}#masterOrganizerList .management-card:first-child{border-color:#44596f}@media(max-width:1150px){body:has(#masterArea:not([hidden])) main{padding:16px}.master-hierarchy,.master-organizer-fields,.organizer-contact-grid{grid-template-columns:1fr}.master-organizer-fields .wide-field,.organizer-contact-grid .wide-contact{grid-column:auto}}.admin-tabs{display:flex;gap:8px;margin:16px 0;border-bottom:1px solid #33465b;padding-bottom:0}.admin-tabs button{border-radius:8px 8px 0 0;border-bottom:none;padding:11px 20px}.admin-tabs button.active{background:#d6ac45;color:#111;font-weight:700}.admin-two-pane{grid-template-columns:minmax(340px,28%) minmax(760px,72%);max-width:none;width:100%}.holding-main{min-height:560px}#holdingForm,#editHoldingForm,#managedRoomForm{max-width:900px}.holding-main .management-list{max-height:52vh;overflow:auto;padding-right:4px}body:has(#adminArea:not([hidden])) main{max-width:1640px;width:100%;padding:24px 32px;margin:0 auto}#lobby:has(#adminArea:not([hidden])){max-width:1540px;width:calc(100vw - 64px);margin:18px auto;padding:28px}#adminArea .admin-two-pane{grid-template-columns:minmax(320px,360px) minmax(760px,1fr);width:100%;max-width:none;margin:0 auto}#adminArea .holding-sidebar,#adminArea .holding-main{min-width:0}@media(max-width:1100px){body:has(#adminArea:not([hidden])) main{padding:16px}#lobby:has(#adminArea:not([hidden])){width:calc(100vw - 24px);padding:18px}#adminArea .admin-two-pane{grid-template-columns:1fr}}.operation-note{margin-top:10px;padding:8px 10px;border-left:3px solid #c99b3d;background:#172331;color:#d9e3ef;font-size:.9rem}.management-actions button:disabled{opacity:.45;cursor:not-allowed}.square.vote-leader{overflow:visible;z-index:6;background:radial-gradient(circle,#fff4a8 0%,#e5b84f 42%,transparent 72%)}.square.vote-leader .piece{animation:voteLeaderRise .55s ease-in-out infinite alternate;filter:drop-shadow(0 5px 3px #0008) drop-shadow(0 0 10px #fff0a0)}.square.vote-leader .piece.enemy{animation:voteLeaderRiseEnemy .55s ease-in-out infinite alternate}@keyframes voteLeaderRise{0%{transform:translateY(0) scale(1)}to{transform:translateY(-10%) scale(1.16)}}@keyframes voteLeaderRiseEnemy{0%{transform:rotate(180deg) translateY(0) scale(1)}to{transform:rotate(180deg) translateY(10%) scale(1.16)}}.voting-status{line-height:1.65}.demo-controls{border:1px solid #33465b;border-radius:12px;padding:16px;background:#0d1824;margin-bottom:14px}.demo-controls h2{margin:0 0 8px;color:#f0c35a}.demo-actions{display:flex;gap:8px;flex-wrap:wrap;margin:10px 0 14px}.demo-voters{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;margin:10px 0 14px}.demo-voter{display:block;padding:7px 9px;border:1px solid #2c4054;border-radius:7px;font-size:.82rem;background:#101e2c}.demo-voter.voted{border-color:#9b7b31;color:#ffe19b}.demo-ranking h3{margin:8px 0}.demo-rank{display:grid;grid-template-columns:1fr auto;gap:8px;align-items:center;padding:5px 0}.demo-rank.leader{color:#ffd46d}.demo-bar{grid-column:1/-1;height:7px;background:#17293a;border-radius:999px;overflow:hidden}.demo-bar i{display:block;height:100%;background:linear-gradient(90deg,#8d6a22,#f2c65b);transition:width .35s ease}.square.vote-leader{z-index:8}.square.vote-leader .piece{display:none}.vote-character{position:absolute;inset:3px 4px 2px;z-index:12;display:flex;flex-direction:column;align-items:center;justify-content:center;border-radius:45% 45% 30% 30%;background:linear-gradient(145deg,#172638,#05080c);border:2px solid #ffd56a;box-shadow:0 0 0 2px #07101a,0 0 18px #ffd45a,0 10px 12px #0009;animation:voteCharacterRise .32s ease-out,voteCharacterPulse .65s ease-in-out infinite alternate;transform-origin:50% 100%;pointer-events:none}.vote-character.enemy{background:linear-gradient(145deg,#4a1717,#100606);border-color:#ff8b68;box-shadow:0 0 0 2px #190707,0 0 18px #ff6c48,0 10px 12px #0009}.vote-character-head{width:27px;height:20px;border-radius:50% 50% 40% 40%;background:#151515;color:#f7d47a;font-size:10px;display:grid;place-items:center;border:1px solid #d9b75b}.vote-character-body{font-weight:900;font-size:20px;color:#fff2c7;line-height:1;text-shadow:0 1px 2px #000}.vote-character-tag{font-size:8px;color:#15100a;background:#ffd56a;border-radius:7px;padding:1px 4px;margin-top:2px;font-weight:900}.target-character{position:absolute;inset:5px;z-index:10;border-radius:50%;display:flex;flex-direction:column;align-items:center;justify-content:center;background:#5a1010e8;border:2px solid #ff7057;color:#fff;box-shadow:0 0 18px #ff4e35;animation:targetAlert .55s ease-in-out infinite alternate;pointer-events:none}.target-character span{font-size:8px}.target-character b{font-size:18px}.square.vote-target>.piece{opacity:.15}.square.vote-moving .vote-character{animation:voteCharacterCharge .45s ease-in-out infinite alternate}@keyframes voteCharacterRise{0%{transform:scale(.35) translateY(18px);opacity:0}to{transform:scale(1) translateY(0);opacity:1}}@keyframes voteCharacterPulse{0%{transform:translateY(1px) scale(1)}to{transform:translateY(-5px) scale(1.08)}}@keyframes targetAlert{0%{transform:scale(.9)}to{transform:scale(1.04)}}@keyframes voteCharacterCharge{0%{transform:translateY(-2px) scale(1.05)}to{transform:translateY(-9px) scale(1.16)}}.character-speech{position:absolute;left:50%;bottom:88%;transform:translate(-50%);z-index:30;white-space:nowrap;background:#fff;color:#27150c;border:2px solid #c99835;border-radius:12px;padding:4px 8px;font-size:12px;font-weight:900;box-shadow:0 3px 8px #0008}.character-speech:after{content:"";position:absolute;left:50%;top:100%;margin-left:-5px;border:5px solid transparent;border-top-color:#c99835}.target-character .character-speech{bottom:90%;border-color:#e25746;color:#65140d}.target-character .character-speech:after{border-top-color:#e25746}.ninja-character{position:absolute!important;inset:3px!important;z-index:22;display:block!important;pointer-events:none;transform:none!important;border:0!important;background:transparent!important;box-shadow:none!important}.ninja-character .ninja-head{position:absolute;width:31px;height:27px;left:50%;top:7px;transform:translate(-50%);border-radius:48% 48% 42% 42%;background:linear-gradient(145deg,#17283d,#07111e);border:2px solid #4ba7ff;box-shadow:0 0 9px #278eff}.ninja-character .ninja-head:before{content:"";position:absolute;width:35px;height:7px;left:-4px;top:5px;background:#183b68;transform:rotate(-7deg);border-radius:5px}.ninja-character .ninja-eye{position:absolute;left:7px;right:7px;top:12px;height:5px;background:#e9c39b;border-radius:4px}.ninja-character .ninja-eye:after{content:"";position:absolute;left:5px;top:1px;width:3px;height:3px;border-radius:50%;background:#111;box-shadow:8px 0 #111}.ninja-character .ninja-body{position:absolute;width:34px;height:31px;left:50%;top:31px;transform:translate(-50%);border-radius:12px 12px 8px 8px;background:linear-gradient(90deg,#07111e,#173250 50%,#07111e);border:2px solid #4ba7ff;box-shadow:0 0 8px #278eff}.ninja-character .ninja-arm,.ninja-character .ninja-leg{position:absolute;display:block;background:#0b1b2d;border:2px solid #4ba7ff;border-radius:8px}.ninja-character .ninja-arm{width:10px;height:27px;top:3px}.ninja-character .arm-l{left:-8px;transform:rotate(20deg)}.ninja-character .arm-r{right:-8px;transform:rotate(-20deg)}.ninja-character .ninja-leg{width:11px;height:20px;top:23px}.ninja-character .leg-l{left:4px;transform:rotate(8deg)}.ninja-character .leg-r{right:4px;transform:rotate(-8deg)}.ninja-character .ninja-piece{position:absolute;left:50%;bottom:-1px;transform:translate(-50%);min-width:23px;padding:0 4px;border-radius:8px;background:#10243b;border:1px solid #69b9ff;color:#fff4cf;font-weight:900;font-size:13px;line-height:18px;text-align:center}.ninja-character.enemy .ninja-head,.ninja-character.enemy .ninja-body,.ninja-character.enemy .ninja-arm,.ninja-character.enemy .ninja-leg{border-color:#ff665c;box-shadow:0 0 8px #e43128}.ninja-character.enemy .ninja-head{background:linear-gradient(145deg,#5d1515,#210707)}.ninja-character.enemy .ninja-head:before{background:#8b1f1f}.ninja-character.enemy .ninja-body,.ninja-character.enemy .ninja-arm,.ninja-character.enemy .ninja-leg{background:#451010}.ninja-character.enemy .ninja-piece{background:#5c1515;border-color:#ff776c}.ninja-character:not(.enemy) .ninja-eye{display:none}.ninja-character:not(.enemy) .ninja-head:after{content:"";position:absolute;right:-15px;top:5px;width:18px;height:6px;background:#183b68;border-radius:5px;transform:rotate(18deg);box-shadow:5px 7px 0 -1px #183b68}.ninja-character.enemy .ninja-eye{display:block}.ninja-character .character-speech{bottom:94%!important}.square.vote-leader,.square.vote-target{overflow:visible!important}.ninja-character{inset:auto 0 0!important;height:78px!important;transform:none!important;overflow:visible!important}.ninja-character .ninja-head{top:2px!important}.ninja-character .ninja-body{top:29px!important}.ninja-character .ninja-leg{top:25px!important;height:19px!important}.ninja-character .ninja-piece{bottom:-2px!important}.target-character.ninja-character{inset:auto 0 0!important;height:78px!important;border-radius:0!important;background:transparent!important}.tendo-character{position:absolute!important;inset:auto 0 0!important;height:84px!important;z-index:30;overflow:visible!important;pointer-events:none;display:block!important;background:transparent!important;border:0!important;box-shadow:none!important}.tendo-piece{position:absolute;width:45px;height:58px;left:50%;bottom:16px;transform:translate(-50%);clip-path:polygon(50% 0,91% 15%,82% 100%,18% 100%,9% 15%);background:linear-gradient(90deg,#c9974e,#f1c879 48%,#bd8740);border:2px solid #6e431d;filter:drop-shadow(0 3px 3px rgba(0,0,0,.45))}.tendo-kanji{position:absolute;inset:12px 4px 5px;display:flex;align-items:center;justify-content:center;color:#17100a;font-family:Yu Mincho,Hiragino Mincho ProN,serif;font-weight:900;font-size:23px;writing-mode:vertical-rl;line-height:1}.hachimaki{position:absolute;left:3px;right:3px;top:12px;height:7px;background:#fff5df;border-top:1px solid #9d201b;border-bottom:1px solid #9d201b;z-index:4}.hachimaki:after{content:"必勝";position:absolute;left:50%;top:-2px;transform:translate(-50%);color:#a01814;font-size:8px;font-weight:900;white-space:nowrap}.hachimaki-tail{position:absolute;top:15px;width:18px;height:5px;background:#fff5df;z-index:2}.hachimaki-tail.t1{right:-12px;transform:rotate(20deg)}.hachimaki-tail.t2{right:-14px;top:22px;transform:rotate(-12deg)}.tendo-face{position:absolute;left:13px;right:13px;top:24px;height:5px;z-index:5}.tendo-character.enemy .tendo-face:before,.tendo-character.enemy .tendo-face:after{content:"";position:absolute;top:0;width:4px;height:4px;border-radius:50%;background:#19100a}.tendo-character.enemy .tendo-face:before{left:1px}.tendo-character.enemy .tendo-face:after{right:1px}.tendo-character:not(.enemy) .tendo-face{display:none}.tendo-arm,.tendo-leg{position:absolute;display:block;background:#d3a057;border:2px solid #71471f;border-radius:8px;filter:drop-shadow(0 2px 2px rgba(0,0,0,.35))}.tendo-arm{width:10px;height:31px;bottom:27px}.tendo-arm.arm-l{left:calc(50% - 31px);transform:rotate(28deg)}.tendo-arm.arm-r{right:calc(50% - 31px);transform:rotate(-28deg)}.tendo-leg{width:11px;height:21px;bottom:1px}.tendo-leg.leg-l{left:calc(50% - 18px);transform:rotate(7deg)}.tendo-leg.leg-r{right:calc(50% - 18px);transform:rotate(-7deg)}.tendo-character.enemy .tendo-piece{box-shadow:0 0 0 2px #d6372dcc,0 0 14px #d6372dcc}.tendo-character:not(.enemy) .tendo-piece{box-shadow:0 0 0 2px #237ed6bf,0 0 14px #237ed6bf}.tendo-character .character-speech{bottom:92%!important;z-index:50!important}.hachimaki,.hachimaki-tail{display:none!important}.tendo-arm,.tendo-leg{width:2px!important;background:#4b3420!important;border:0!important;border-radius:2px!important;filter:none!important}.tendo-arm{height:28px!important}.tendo-leg{height:18px!important}.tendo-face{top:8px!important}.tendo-face:before,.tendo-face:after{content:""!important;position:absolute!important;top:0!important;width:4px!important;height:4px!important;border-radius:50%!important;background:#19100a!important}.tendo-face:before{left:1px!important}.tendo-face:after{right:1px!important}.tendo-character.voting .tendo-face{display:block!important}.tendo-character.finalized:not(.enemy) .tendo-piece{transform:translate(-50%) rotate(180deg)!important}.tendo-character{height:72px!important}.tendo-piece{width:39px!important;height:50px!important;bottom:13px!important}.tendo-kanji{font-size:20px!important;inset:12px 3px 4px!important}.tendo-arm{height:15px!important;bottom:27px!important}.tendo-arm.arm-l{left:calc(50% - 24px)!important;transform:rotate(34deg)!important}.tendo-arm.arm-r{right:calc(50% - 24px)!important;transform:rotate(-34deg)!important}.tendo-leg{height:10px!important;bottom:2px!important}.tendo-leg.leg-l{left:calc(50% - 12px)!important}.tendo-leg.leg-r{right:calc(50% - 12px)!important}.tendo-face{left:11px!important;right:11px!important;top:8px!important;height:8px!important}.tendo-face:before,.tendo-face:after{width:4px!important;height:5px!important;background:#17100a!important;box-shadow:0 -2px 0 -1px #17100a!important}.tendo-face b:before,.tendo-face b:after{content:"";position:absolute;top:-3px;width:7px;height:2px;background:#17100a;border-radius:2px}.tendo-face b:before{left:-1px;transform:rotate(12deg)}.tendo-face b:after{right:-1px;transform:rotate(-12deg)}.tendo-helmet{position:absolute;left:6px;right:6px;top:-7px;height:16px;z-index:8;border-radius:55% 55% 22% 22%;background:linear-gradient(#57452f,#21170f);border:1px solid #b98a3e;box-shadow:0 2px 2px #0007}.tendo-helmet:before,.tendo-helmet:after{content:"";position:absolute;top:-5px;width:11px;height:9px;border-top:3px solid #d0a24e}.tendo-helmet:before{left:1px;transform:rotate(30deg);border-left:2px solid #d0a24e}.tendo-helmet:after{right:1px;transform:rotate(-30deg);border-right:2px solid #d0a24e}.tendo-helmet i{position:absolute;left:50%;top:-4px;width:3px;height:10px;transform:translate(-50%);background:#d0a24e;border-radius:2px}.tendo-character.voting .tendo-kanji,.tendo-character.voting .tendo-face{visibility:visible!important;display:block!important}.tendo-character.finalized:not(.enemy) .tendo-piece{transform:translate(-50%)!important;background:linear-gradient(90deg,#b9823e,#d7a75a 48%,#a97134)!important}.tendo-character.finalized:not(.enemy) .tendo-kanji,.tendo-character.finalized:not(.enemy) .tendo-face{visibility:hidden!important}.tendo-character.finalized:not(.enemy) .tendo-helmet:before,.tendo-character.finalized:not(.enemy) .tendo-helmet:after{top:1px;transform:none;border-top-color:#8d672f}.tendo-character.finalized:not(.enemy) .tendo-helmet i{display:none}.tendo-character.charging{animation:tendoCharge 1.45s cubic-bezier(.22,.72,.25,1) forwards!important;z-index:80!important}.tendo-character.charging .tendo-leg.leg-l{animation:tendoLegL .18s linear infinite alternate}.tendo-character.charging .tendo-leg.leg-r{animation:tendoLegR .18s linear infinite alternate}.tendo-character.charging .tendo-arm.arm-l{animation:tendoArmL .18s linear infinite alternate}.tendo-character.charging .tendo-arm.arm-r{animation:tendoArmR .18s linear infinite alternate}@keyframes tendoCharge{0%,16%{transform:translate(0) scale(1)}24%{transform:translateY(-5px) scale(1.04)}to{transform:translate(var(--move-x),var(--move-y)) scale(1)}}@keyframes tendoLegL{0%{transform:rotate(25deg)}to{transform:rotate(-25deg)}}@keyframes tendoLegR{0%{transform:rotate(-25deg)}to{transform:rotate(25deg)}}@keyframes tendoArmL{0%{transform:rotate(48deg)}to{transform:rotate(12deg)}}@keyframes tendoArmR{0%{transform:rotate(-48deg)}to{transform:rotate(-12deg)}}.tendo-character{height:68px!important;filter:drop-shadow(0 4px 3px rgba(0,0,0,.35))}.tendo-piece{width:34px!important;height:43px!important;bottom:13px!important;clip-path:polygon(50% 0,88% 12%,82% 100%,18% 100%,12% 12%)!important;border-radius:5px 5px 8px 8px;background:linear-gradient(90deg,#c88d36,#f3c86d 48%,#b9782e)!important}.tendo-kanji{font-size:15px!important;inset:14px 3px 3px!important;writing-mode:horizontal-tb!important}.tendo-face{left:8px!important;right:8px!important;top:7px!important;height:8px!important}.tendo-face:before,.tendo-face:after{width:4px!important;height:4px!important}.tendo-face b:before,.tendo-face b:after{width:6px!important;height:2px!important;top:-3px!important}.tendo-arm{height:10px!important;bottom:26px!important}.tendo-leg{height:8px!important;bottom:3px!important}.tendo-arm.arm-l{left:calc(50% - 20px)!important}.tendo-arm.arm-r{right:calc(50% - 20px)!important}.tendo-leg.leg-l{left:calc(50% - 9px)!important}.tendo-leg.leg-r{right:calc(50% - 9px)!important}.tendo-helmet{left:4px!important;right:4px!important;top:-8px!important;height:13px!important}.tendo-character.charging{animation:tendoRunAcross 1.65s linear forwards!important;transform-origin:50% 100%!important}.tendo-character.charging .tendo-piece{animation:tendoBodyRun .16s ease-in-out infinite alternate!important}.tendo-character.charging .tendo-leg.leg-l{animation:tendoLegL .12s ease-in-out infinite alternate!important}.tendo-character.charging .tendo-leg.leg-r{animation:tendoLegR .12s ease-in-out infinite alternate-reverse!important}.tendo-character.charging .tendo-arm.arm-l{animation:tendoArmL .12s ease-in-out infinite alternate-reverse!important}.tendo-character.charging .tendo-arm.arm-r{animation:tendoArmR .12s ease-in-out infinite alternate!important}@keyframes tendoRunAcross{0%{transform:translate(0)}8%{transform:translate(calc(var(--move-x)*.04),-3px)}16%{transform:translate(calc(var(--move-x)*.1))}28%{transform:translate(calc(var(--move-x)*.22),-4px)}40%{transform:translate(calc(var(--move-x)*.36))}52%{transform:translate(calc(var(--move-x)*.51),-4px)}64%{transform:translate(calc(var(--move-x)*.66))}76%{transform:translate(calc(var(--move-x)*.8),-4px)}88%{transform:translate(calc(var(--move-x)*.92))}to{transform:translate(var(--move-x),var(--move-y))}}@keyframes tendoBodyRun{0%{rotate:-4deg;translate:0 0}to{rotate:4deg;translate:0 -2px}}@keyframes tendoLegL{0%{transform:rotate(55deg) translateY(-1px)}to{transform:rotate(-45deg) translateY(1px)}}@keyframes tendoLegR{0%{transform:rotate(-55deg) translateY(-1px)}to{transform:rotate(45deg) translateY(1px)}}@keyframes tendoArmL{0%{transform:rotate(60deg)}to{transform:rotate(-30deg)}}@keyframes tendoArmR{0%{transform:rotate(-60deg)}to{transform:rotate(30deg)}}.tendo-character.drop-arrival{animation:tendoDropIn .7s cubic-bezier(.2,.8,.2,1) both!important}@keyframes tendoDropIn{0%{transform:translateY(-55px) scale(.65);opacity:0}65%{transform:translateY(4px) scale(1.08);opacity:1}to{transform:translateY(0) scale(1);opacity:1}}.tendo-character.charging{animation:tendoRunAcrossCompat 1.65s linear forwards!important}@keyframes tendoRunAcrossCompat{0%{transform:translate(0)}to{transform:translate(var(--move-x),var(--move-y))}}.demo-speed{display:flex;align-items:center;gap:7px;margin:12px 0 14px}.demo-speed b{margin-right:4px}.demo-speed button.selected{background:#d5a33f;color:#111;border-color:#f3ca70;font-weight:800}.tendo-face{display:block!important;position:absolute!important;left:6px!important;right:6px!important;top:6px!important;height:12px!important;z-index:10!important}.tendo-face:before,.tendo-face:after{display:none!important}.tendo-face .eye{position:absolute;top:3px;width:7px;height:8px;background:#fff7df;border:1px solid #2a1608;border-radius:55% 55% 50% 50%;box-sizing:border-box}.tendo-face .eye-l{left:2px}.tendo-face .eye-r{right:2px}.tendo-face .eye u{position:absolute;width:3px;height:4px;background:#17100a;border-radius:50%;left:2px;top:2px;text-decoration:none}.tendo-face .brow{position:absolute;top:0;width:8px;height:2px;background:#28170c;border-radius:2px}.tendo-face .brow-l{left:0;transform:rotate(17deg)}.tendo-face .brow-r{right:0;transform:rotate(-17deg)}.tendo-face .mouth{position:absolute;left:50%;top:10px;width:6px;height:3px;transform:translate(-50%);border-bottom:2px solid #5b1d12;border-radius:0 0 8px 8px;text-decoration:none}.tendo-kanji{font-size:12px!important;inset:18px 2px 2px!important;font-weight:900!important}.hand-piece.live-hand-piece{position:relative;min-width:62px;min-height:68px;overflow:visible!important;background:transparent!important;border-color:#d7aa49!important;color:transparent!important}.hand-character{left:50%!important;right:auto!important;bottom:1px!important;width:48px!important;transform:translate(-50%) scale(.86)!important;overflow:visible!important}.hand-character .character-speech{bottom:88%!important}.hand-count{position:absolute;right:2px;bottom:2px;color:#e7c173;font-size:11px;font-weight:800}.tendo-character.run{opacity:0!important}.floating-actor-host{position:absolute;z-index:9999;pointer-events:none;overflow:visible;transform-origin:50% 100%}.floating-actor-host .floating-runner{position:absolute!important;left:50%!important;bottom:0!important;width:56px!important;height:68px!important;transform:translate(-50%)!important;overflow:visible!important}.floating-runner .tendo-piece{animation:runBody .16s ease-in-out infinite alternate!important}.floating-runner .tendo-leg.leg-l{animation:runLegL .13s ease-in-out infinite alternate!important}.floating-runner .tendo-leg.leg-r{animation:runLegR .13s ease-in-out infinite alternate!important}.floating-runner .tendo-arm.arm-l{animation:runArmL .13s ease-in-out infinite alternate!important}.floating-runner .tendo-arm.arm-r{animation:runArmR .13s ease-in-out infinite alternate!important}.floating-runner .run-shadow{position:absolute;left:50%;bottom:-1px;width:25px;height:6px;transform:translate(-50%);background:#0005;border-radius:50%;animation:runShadow .16s ease-in-out infinite alternate}@keyframes runBody{0%{translate:0 0;rotate:-6deg}to{translate:0 -5px;rotate:6deg}}@keyframes runLegL{0%{transform:rotate(68deg) translateY(-2px)}to{transform:rotate(-58deg) translateY(2px)}}@keyframes runLegR{0%{transform:rotate(-68deg) translateY(2px)}to{transform:rotate(58deg) translateY(-2px)}}@keyframes runArmL{0%{transform:rotate(68deg)}to{transform:rotate(-42deg)}}@keyframes runArmR{0%{transform:rotate(-68deg)}to{transform:rotate(42deg)}}@keyframes runShadow{0%{transform:translate(-50%) scaleX(.65);opacity:.35}to{transform:translate(-50%) scaleX(1);opacity:.65}}.tendo-character .tendo-kanji{display:none!important}.tendo-foot-label{position:absolute;left:50%;bottom:-5px;transform:translate(-50%);min-width:25px;padding:1px 5px;background:#fff;color:#17110b;border:1px solid #2b2116;font-size:16px!important;line-height:1.05;font-weight:900;text-align:center;z-index:60;box-shadow:0 2px 4px #0007;white-space:nowrap}.floating-actor-host .floating-runner,.floating-defender-host .floating-runner{width:100%!important;height:100%!important}.floating-actor-host .is-running .tendo-foot-label{display:none!important}.demo-final-speech,.demo-target-speech{position:absolute;left:50%;bottom:104%;transform:translate(-50%);z-index:100;white-space:nowrap;background:#fff!important;color:#24140b!important;opacity:1!important;border:2px solid #b47b22;border-radius:12px;padding:5px 10px;font-size:14px;font-weight:900;box-shadow:0 3px 9px #0009}.demo-target-speech{border-color:#c9362e;color:#75150f!important}.floating-defender-host{position:absolute;z-index:9998;pointer-events:none;overflow:visible;transform-origin:50% 100%}.clash-left{animation:pre11ClashLeft .34s ease-in-out}.clash-right{animation:pre11ClashRight .34s ease-in-out}@keyframes pre11ClashLeft{45%{filter:brightness(1.8);transform:translate(9px,-3px) scale(1.08)}}@keyframes pre11ClashRight{45%{filter:brightness(1.8);transform:translate(-9px,-3px) scale(1.08)}}.tendo-character.voting .tendo-piece{width:30px!important;height:25px!important;bottom:18px!important;clip-path:polygon(50% 0,88% 18%,82% 100%,18% 100%,12% 18%)!important}.tendo-character.voting .tendo-arm,.tendo-character.voting .tendo-leg,.tendo-character.voting .tendo-foot-label{display:none!important}.tendo-character.voting .tendo-helmet{transform:scale(.82);transform-origin:50% 100%}.tendo-character.facing-front .tendo-face{display:block!important;visibility:visible!important}.tendo-character.facing-back .tendo-face{display:none!important;visibility:hidden!important}.tendo-character.facing-back .tendo-piece{background:linear-gradient(90deg,#b9823e,#d7a75a 48%,#a97134)!important}.tendo-character.facing-back .tendo-helmet:before,.tendo-character.facing-back .tendo-helmet:after{top:1px!important;transform:none!important;border-top-color:#8d672f!important}.tendo-character.facing-back .tendo-helmet i{display:none!important}.tendo-character.facing-front .tendo-helmet i{display:block!important}.target-character.tendo-character{transform:scale(1)!important}.tendo-foot-label{left:calc(50% + 15px)!important;bottom:2px!important;transform:none!important;min-width:22px;padding:1px 4px;font-size:15px!important}.tendo-character.voting .tendo-foot-label{display:none!important}.floating-defender-host.king-defeated{animation:kingDefeated .65s ease-in forwards!important;transform-origin:50% 100%}@keyframes kingDefeated{0%{transform:rotate(0) translateY(0);opacity:1}65%{transform:rotate(72deg) translate(12px,7px);opacity:1}to{transform:rotate(88deg) translate(18px,12px);opacity:.2}}.demo-paused *{animation-play-state:paused!important}.battle-stage{position:absolute;z-index:9000;overflow:hidden;pointer-events:none;background:radial-gradient(circle at 50% 68%,#a65b2394,#140d0ae6 48%,#020407f5);box-shadow:inset 0 0 55px #000;border:3px solid #c58b39}.battle-stage:before,.battle-stage:after{content:"";position:absolute;inset:0;background:repeating-linear-gradient(112deg,transparent 0 46px,rgba(255,198,91,.07) 47px 49px);animation:battleWind 1.2s linear infinite}.battle-stage:after{background:linear-gradient(transparent 56%,#4a230fe0 57%,#0c0806fa);animation:none}.battle-stage>strong{position:absolute;left:50%;top:7%;transform:translate(-50%);z-index:3;color:#ffe08a;font-family:Yu Mincho,serif;font-size:clamp(22px,4vw,42px);letter-spacing:.28em;text-shadow:0 3px 8px #000,0 0 14px #e86c25}.battle-ground{position:absolute;left:8%;right:8%;bottom:16%;height:10%;z-index:2;border-radius:50%;background:#100b08;box-shadow:0 0 24px 14px #da692647}.battle-stage~.floating-actor-host,.battle-defender{z-index:10020!important;filter:drop-shadow(0 7px 5px #000)}@keyframes battleWind{0%{transform:translate(-50px)}to{transform:translate(50px)}}#demoTurnSlot .turn{margin:0 0 12px;width:100%;box-sizing:border-box}.tendo-character.voting .tendo-foot-label{display:block!important;left:calc(50% + 12px)!important;bottom:5px!important}.battle-stage>strong{width:92%;text-align:center;font-size:clamp(16px,2.3vw,28px);letter-spacing:.08em}.battle-facing-right .tendo-piece,.battle-facing-left .tendo-piece{animation:none!important;transform-origin:50% 100%!important}.battle-facing-right .tendo-piece{transform:translate(-50%) skewY(-7deg)!important}.battle-facing-left .tendo-piece{transform:translate(-50%) skewY(7deg)!important}.tendo-character.battle-facing-right .tendo-face,.tendo-character.battle-facing-left .tendo-face{display:block!important;visibility:visible!important;width:12px!important}.battle-facing-right .tendo-face{left:auto!important;right:3px!important}.battle-facing-left .tendo-face{left:3px!important;right:auto!important}.battle-facing-right .eye-l,.battle-facing-left .eye-r{display:none!important}.battle-facing-right .eye-r{right:0!important}.battle-facing-left .eye-l{left:0!important}.battle-facing-right .brow-l,.battle-facing-left .brow-r{display:none!important}.battle-facing-right .tendo-arm.arm-r{transform:rotate(-72deg)!important;right:calc(50% - 24px)!important}.battle-facing-left .tendo-arm.arm-l{transform:rotate(72deg)!important;left:calc(50% - 24px)!important}.battle-facing-right .tendo-leg.leg-r{transform:rotate(-18deg)!important}.battle-facing-left .tendo-leg.leg-l{transform:rotate(18deg)!important}.hand-piece.live-hand-piece:disabled,.hand-piece.live-hand-piece:disabled .tendo-character{opacity:1!important}.tendo-character.voting .tendo-piece{width:34px!important;height:30px!important;bottom:16px!important}.tendo-character.voting .tendo-face{left:5px!important;right:5px!important;top:15px!important;height:8px!important}.tendo-character.voting .eye{width:6px!important;height:6px!important}.tendo-character.announce{transform:scale(.72)!important;transform-origin:50% 100%!important}.tendo-character.facing-right .tendo-face,.tendo-character.facing-left .tendo-face{display:block!important;visibility:visible!important;width:12px!important}.tendo-character.facing-right .tendo-face{left:auto!important;right:3px!important}.tendo-character.facing-left .tendo-face{left:3px!important;right:auto!important}.facing-right .eye-l,.facing-left .eye-r,.facing-right .brow-l,.facing-left .brow-r{display:none!important}.facing-right .tendo-piece{transform:translate(-50%) skewY(-7deg)!important}.facing-left .tendo-piece{transform:translate(-50%) skewY(7deg)!important}body .tendo-character.finalized.facing-front .tendo-piece,body .tendo-character.finalized.facing-right .tendo-piece,body .tendo-character.finalized.facing-left .tendo-piece{background:linear-gradient(90deg,#c9974e,#f1c879 48%,#bd8740)!important}body .tendo-character.finalized.facing-front .tendo-face,body .tendo-character.finalized.facing-right .tendo-face,body .tendo-character.finalized.facing-left .tendo-face,body .tendo-character.finalized.battle-facing-right .tendo-face,body .tendo-character.finalized.battle-facing-left .tendo-face{display:block!important;visibility:visible!important}body .tendo-character.finalized.facing-front .tendo-helmet i,body .tendo-character.finalized.facing-right .tendo-helmet i,body .tendo-character.finalized.facing-left .tendo-helmet i{display:block!important}body .tendo-character.finalized.facing-back .tendo-face{display:none!important;visibility:hidden!important}.battle-stage .battle-impact{position:absolute;left:50%;top:55%;z-index:8;width:8px;height:8px;border-radius:50%;background:#fff;box-shadow:0 0 12px 8px #fff,0 0 28px 18px #ffad32;animation:battleImpact .52s ease-out both}@keyframes battleImpact{0%,38%{opacity:0;transform:scale(.2)}48%{opacity:1;transform:scale(1.7)}to{opacity:0;transform:scale(3.2)}}.battle-stage~.floating-actor-host .tendo-foot-label{display:block!important;left:calc(50% + 15px)!important;bottom:2px!important}.arrival-actor-host{position:absolute;z-index:10030;pointer-events:none;transform-origin:50% 100%}.arrival-actor-host .floating-runner{position:absolute!important;left:50%!important;bottom:0!important;width:100%!important;height:100%!important;transform:translate(-50%)!important}.arrival-actor-host .arrival-head .tendo-piece{width:34px!important;height:30px!important;bottom:16px!important}.arrival-actor-host .arrival-head .tendo-face{display:block!important;visibility:visible!important;left:5px!important;right:5px!important;top:15px!important}.arrival-actor-host .arrival-head .tendo-arm,.arrival-actor-host .arrival-head .tendo-leg,.arrival-actor-host .arrival-head .tendo-foot-label,.arrival-actor-host .arrival-head .run-shadow{display:none!important}.arrival-actor-host .arrival-transform{animation:arrivalTransform .38s cubic-bezier(.2,.9,.2,1) both}@keyframes arrivalTransform{0%{transform:scale(.68);filter:brightness(1.8)}65%{transform:scale(1.15);filter:brightness(1.25)}to{transform:scale(1);filter:brightness(1)}}.piece.arrival-piece-hidden{opacity:0!important}#opponentHand .hand-piece{background:linear-gradient(145deg,#a9682e,#603719)!important;border-color:#c78b49!important;color:#fff!important;text-shadow:0 1px 2px #000}.tendo-character.enemy .tendo-piece{background:linear-gradient(90deg,#c45c17,#f09232 48%,#9f3f0d)!important;border-color:#6f2808!important}.tendo-character.enemy .tendo-foot-label{background:#6f3f1e!important;color:#fff!important;border-color:#d39a54!important;text-shadow:0 1px 2px #000}.battle-result-fixed{position:absolute;z-index:10060;transform:translate(-50%);white-space:nowrap;padding:5px 9px;border:2px solid #8e6328;border-radius:11px;background:#fff;color:#24140b;font-size:clamp(11px,1.7vw,15px);font-weight:900;box-shadow:0 3px 9px #0009;pointer-events:none}.battle-result-fixed.winner{border-color:#d49d2e;color:#693b00}.battle-result-fixed.loser{border-color:#8d4035;color:#701b16}.piece{font-size:clamp(14px,3vw,27px)}.piece.long-name{font-size:clamp(12px,1.9vw,18px)}.piece.enemy.promoted{color:#d5231f!important;text-shadow:-1px -1px 0 #fff,1px -1px 0 #fff,-1px 1px 0 #fff,1px 1px 0 #fff,0 1px 3px #000!important}.tendo-character.pawn-official>.tendo-piece,.tendo-character.pawn-official>.tendo-arm,.tendo-character.pawn-official>.tendo-leg,.tendo-character.pawn-official>.run-shadow{display:none!important}.tendo-character.pawn-official:before{content:"";position:absolute;left:50%;bottom:-8px;width:78px;height:104px;transform:translate(-50%);background-image:url(/assets/characters/pawn/pawn_official_sprite_v1.png);background-repeat:no-repeat;background-size:400% 200%;background-position:33.333% 0;z-index:20;filter:drop-shadow(0 4px 3px #0008)}.tendo-character.pawn-official:after{content:"歩";display:none;position:absolute;left:50%;bottom:24px;z-index:24;transform:translate(-50%);font-family:Yu Mincho,Hiragino Mincho ProN,serif;font-size:17px;line-height:1;font-weight:900;color:#17100a;text-shadow:0 1px 1px #fff7;pointer-events:none}.tendo-character.pawn-official.voting:before{width:70px;height:94px;bottom:-3px;background-position:0 0}.tendo-character.pawn-official.voting:after{display:none}.tendo-character.pawn-official.facing-front:before{background-position:33.333% 0}.tendo-character.pawn-official.facing-front>.tendo-foot-label{display:none!important}.tendo-character.pawn-official.facing-back:before{background-position:66.667% 0}.tendo-character.pawn-official.facing-back:after{display:block;bottom:30px;font-size:22px;color:#2d1508;text-shadow:0 1px 0 #ffe0a0,0 0 3px #fff}.tendo-character.pawn-official.facing-back>.tendo-foot-label{display:none!important}.tendo-character.pawn-official.facing-right:before,.tendo-character.pawn-official.battle-facing-right:before{background-position:100% 0}.tendo-character.pawn-official.facing-left:before,.tendo-character.pawn-official.battle-facing-left:before{background-position:0 100%}.tendo-character.pawn-official.facing-right:after,.tendo-character.pawn-official.facing-left:after,.tendo-character.pawn-official.battle-facing-right:after,.tendo-character.pawn-official.battle-facing-left:after{display:none}.tendo-character.pawn-official.battle-attacking:before{background-position:33.333% 100%}.tendo-character.pawn-official.enemy.battle-attacking:before{transform:translate(-50%) scaleX(-1)}.tendo-character.pawn-official.battle-attacking:after{display:none}.tendo-character.pawn-official.battle-defeated:before{background-position:66.667% 100%}.tendo-character.pawn-official.battle-defeated:after{display:none}.tendo-character.pawn-official.battle-victory:before{background-position:100% 100%}.tendo-character.pawn-official.battle-victory:after{display:none}.tendo-character.pawn-official.enemy:before{filter:hue-rotate(-10deg) saturate(1.55) brightness(.86) drop-shadow(0 4px 3px #0009)}.tendo-character.pawn-official.enemy:after{color:#fff;text-shadow:0 1px 3px #000,0 0 3px #000}.floating-actor-host .pawn-official:before,.floating-defender-host .pawn-official:before,.arrival-actor-host .pawn-official:before{width:96px;height:128px;bottom:-18px}.floating-actor-host .pawn-official:after,.floating-defender-host .pawn-official:after,.arrival-actor-host .pawn-official:after{bottom:27px;font-size:18px}.floating-actor-host .pawn-official.facing-back:after,.floating-defender-host .pawn-official.facing-back:after,.arrival-actor-host .pawn-official.facing-back:after{bottom:38px;font-size:22px}.tendo-character.pawn-official.is-running:before{background-image:url(/assets/characters/pawn/pawn_walk_4dir_3frame_v1.png);background-size:400% 300%;animation-duration:var(--pawn-walk-cycle,.72s)!important;animation-timing-function:steps(1,end)!important;animation-iteration-count:infinite!important}.tendo-character.pawn-official.is-running.facing-front:before{animation-name:pawnWalkFront!important}.tendo-character.pawn-official.is-running.facing-back:before{animation-name:pawnWalkBack!important}.tendo-character.pawn-official.is-running.facing-right:before{animation-name:pawnWalkRight!important}.tendo-character.pawn-official.is-running.facing-left:before{animation-name:pawnWalkLeft!important}.tendo-character.pawn-official.is-running.facing-back:after{display:none!important}.tendo-character.pawn-official.is-running>.run-shadow{display:block!important;left:19%!important;right:19%!important;bottom:-8px!important;animation:pawnWalkShadow var(--pawn-walk-cycle,.72s) ease-in-out infinite!important}.tendo-character.pawn-official.pawn-landing:before{animation:pawnLanding .18s cubic-bezier(.2,.9,.3,1) both!important}@keyframes pawnWalkFront{0%,14.99%{background-position:0 0;transform:translate(-50%) translateY(-2px)}15%,49.99%,65%,to{background-position:0 50%;transform:translate(-50%) translateY(0)}50%,64.99%{background-position:0 100%;transform:translate(-50%) translateY(-2px)}}@keyframes pawnWalkBack{0%,14.99%{background-position:33.333% 0;transform:translate(-50%) translateY(-2px)}15%,49.99%,65%,to{background-position:33.333% 50%;transform:translate(-50%) translateY(0)}50%,64.99%{background-position:33.333% 100%;transform:translate(-50%) translateY(-2px)}}.tendo-character.pawn-official.pawn-promoted.is-running:before{background-image:url(/assets/characters/pawn/pawn_walk_4dir_3frame_promoted_v1.png)!important}@keyframes pawnWalkRight{0%,14.99%{background-position:66.667% 0;transform:translate(-50%) translateY(-2px)}15%,49.99%,65%,to{background-position:66.667% 50%;transform:translate(-50%) translateY(0)}50%,64.99%{background-position:66.667% 100%;transform:translate(-50%) translateY(0)}}@keyframes pawnWalkLeft{0%,14.99%{background-position:100% 0;transform:translate(-50%) translateY(-2px)}15%,49.99%,65%,to{background-position:100% 50%;transform:translate(-50%) translateY(0)}50%,64.99%{background-position:100% 100%;transform:translate(-50%) translateY(0)}}@keyframes pawnWalkShadow{0%,50%,to{opacity:.42;transform:scaleX(.82)}25%,75%{opacity:.7;transform:scaleX(1.08)}}@keyframes pawnLanding{0%{transform:translate(-50%) translateY(-7px) scaleY(1.06)}65%{transform:translate(-50%) translateY(3px) scaleY(.9)}to{transform:translate(-50%) translateY(0) scaleY(1)}}.battle-clone-host{position:absolute;z-index:10046;pointer-events:none}.battle-center-speech{position:absolute;z-index:10065;transform:translate(-50%);white-space:nowrap;padding:6px 12px;border:2px solid #d8a63b;border-radius:12px;background:#fff;color:#351c06;font-weight:900;box-shadow:0 4px 12px #000a;pointer-events:none}.battle-stage.trinity-active{box-shadow:0 0 0 3px #d8a63b,0 0 32px #f6c65099,inset 0 0 55px #6c2509aa}.battle-stage.winner-left{background:radial-gradient(circle at 27% 66%,#ffca5bb8,#76371794 25%,#140d0ae6 57%,#020407f5)}.battle-stage.winner-right{background:radial-gradient(circle at 73% 66%,#ffca5bb8,#76371794 25%,#140d0ae6 57%,#020407f5)}.battle-defender.is-defeated-visible{opacity:.52!important;filter:brightness(.78) drop-shadow(0 7px 5px #000)!important}.battle-clone-host .pawn-official:before{width:96px;height:128px;bottom:-18px}.battle-clone-host .pawn-official:after{bottom:27px;font-size:18px}.battle-stage~.floating-actor-host .pawn-official>.tendo-foot-label,.battle-clone-host .pawn-official>.tendo-foot-label{display:block!important;left:calc(50% + 15px)!important;bottom:2px!important}.tendo-character.lance-official>.tendo-piece,.tendo-character.lance-official>.tendo-arm,.tendo-character.lance-official>.tendo-leg,.tendo-character.lance-official>.run-shadow{display:none!important}.tendo-character.lance-official:before{content:"";position:absolute;left:50%;bottom:-8px;width:78px;height:104px;transform:translate(-50%);background-image:url(/assets/characters/lance/lance_official_sprite_v1.png);background-repeat:no-repeat;background-size:400% 200%;background-position:33.333% 0;z-index:20;filter:drop-shadow(0 4px 3px #0008)}.tendo-character.lance-official.voting:before{width:70px;height:94px;bottom:-3px;background-position:0 0}.tendo-character.lance-official.facing-front:before{background-position:33.333% 0}.tendo-character.lance-official.facing-back:before{background-position:66.667% 0}.tendo-character.lance-official.facing-right:before,.tendo-character.lance-official.battle-facing-right:before{background-position:100% 0}.tendo-character.lance-official.facing-left:before,.tendo-character.lance-official.battle-facing-left:before{background-position:0 100%}.tendo-character.lance-official.battle-attacking:before{background-position:33.333% 100%}.tendo-character.lance-official.enemy.battle-attacking:before{transform:translate(-50%) scaleX(-1)}.tendo-character.lance-official.battle-defeated:before{background-position:66.667% 100%}.tendo-character.lance-official.battle-victory:before{background-position:100% 100%}.tendo-character.lance-official.enemy:before{filter:hue-rotate(-10deg) saturate(1.55) brightness(.86) drop-shadow(0 4px 3px #0009)}.tendo-character.lance-official>.tendo-foot-label{display:none!important}.floating-actor-host .lance-official:before,.floating-defender-host .lance-official:before,.arrival-actor-host .lance-official:before{width:96px;height:128px;bottom:-18px}.floating-actor-host .lance-official.battle-facing-right>.tendo-foot-label,.floating-actor-host .lance-official.battle-facing-left>.tendo-foot-label,.floating-defender-host .lance-official>.tendo-foot-label{display:block!important;left:calc(50% + 15px)!important;bottom:2px!important}.tendo-character.lance-official.is-running:before{background-image:url(/assets/characters/lance/lance_walk_4dir_3frame_v1.png);background-size:400% 300%;animation-duration:var(--pawn-walk-cycle,.72s)!important;animation-timing-function:steps(1,end)!important;animation-iteration-count:infinite!important}.tendo-character.lance-official.is-running.facing-front:before{animation-name:lanceWalkFront!important}.tendo-character.lance-official.is-running.facing-back:before{animation-name:lanceWalkBack!important}.tendo-character.lance-official.is-running.facing-right:before{animation-name:lanceWalkRight!important}.tendo-character.lance-official.is-running.facing-left:before{animation-name:lanceWalkLeft!important}@keyframes lanceWalkFront{0%,14.99%{background-position:0 0;transform:translate(-50%) translateY(-2px)}15%,49.99%,65%,to{background-position:0 50%;transform:translate(-50%)}50%,64.99%{background-position:0 100%;transform:translate(-50%) translateY(-2px)}}@keyframes lanceWalkBack{0%,14.99%{background-position:33.333% 0;transform:translate(-50%) translateY(-2px)}15%,49.99%,65%,to{background-position:33.333% 50%;transform:translate(-50%)}50%,64.99%{background-position:33.333% 100%;transform:translate(-50%) translateY(-2px)}}@keyframes lanceWalkRight{0%,14.99%{background-position:66.667% 0;transform:translate(-50%) translateY(-2px)}15%,49.99%,65%,to{background-position:66.667% 50%;transform:translate(-50%)}50%,64.99%{background-position:66.667% 100%;transform:translate(-50%) translateY(-1px)}}@keyframes lanceWalkLeft{0%,14.99%{background-position:100% 0;transform:translate(-50%) translateY(-2px)}15%,49.99%,65%,to{background-position:100% 50%;transform:translate(-50%)}50%,64.99%{background-position:100% 100%;transform:translate(-50%) translateY(-1px)}}.tendo-character.knight-official>.tendo-piece,.tendo-character.knight-official>.tendo-arm,.tendo-character.knight-official>.tendo-leg,.tendo-character.knight-official>.run-shadow{display:none!important}.tendo-character.knight-official:before{content:"";position:absolute;left:50%;bottom:-8px;width:78px;height:104px;transform:translate(-50%);background-image:url(/assets/characters/knight/knight_official_sprite_v1.png);background-repeat:no-repeat;background-size:400% 200%;background-position:33.333% 0;z-index:20;filter:drop-shadow(0 4px 3px #0008)}.tendo-character.knight-official.voting:before{width:70px;height:94px;bottom:-3px;background-position:0 0}.tendo-character.knight-official.facing-front:before{background-position:33.333% 0}.tendo-character.knight-official.facing-back:before{background-position:66.667% 0}.tendo-character.knight-official.facing-right:before,.tendo-character.knight-official.battle-facing-right:before{background-position:100% 0}.tendo-character.knight-official.facing-left:before,.tendo-character.knight-official.battle-facing-left:before{background-position:0 100%}.tendo-character.knight-official.battle-attacking:before{background-position:33.333% 100%}.tendo-character.knight-official.enemy.battle-attacking:before{transform:translate(-50%) scaleX(-1)}.tendo-character.knight-official.battle-defeated:before{background-position:66.667% 100%}.tendo-character.knight-official.battle-victory:before{background-position:100% 100%}.tendo-character.knight-official.enemy:before{filter:hue-rotate(-10deg) saturate(1.55) brightness(.86) drop-shadow(0 4px 3px #0009)}.tendo-character.knight-official>.tendo-foot-label{display:none!important}.floating-actor-host .knight-official:before,.floating-defender-host .knight-official:before,.arrival-actor-host .knight-official:before{width:96px;height:128px;bottom:-18px}.floating-actor-host .knight-official.battle-facing-right>.tendo-foot-label,.floating-actor-host .knight-official.battle-facing-left>.tendo-foot-label,.floating-defender-host .knight-official>.tendo-foot-label{display:block!important;left:calc(50% + 15px)!important;bottom:2px!important}.tendo-character.knight-official.is-running:before{background-image:url(/assets/characters/knight/knight_walk_4dir_3frame_v1.png);background-size:400% 300%;animation-duration:var(--pawn-walk-cycle,.72s)!important;animation-timing-function:steps(1,end)!important;animation-iteration-count:infinite!important}.tendo-character.knight-official.is-running.facing-front:before{animation-name:pawnWalkFront!important}.tendo-character.knight-official.is-running.facing-back:before{animation-name:pawnWalkBack!important}.tendo-character.knight-official.is-running.facing-right:before{animation-name:pawnWalkRight!important}.tendo-character.knight-official.is-running.facing-left:before{animation-name:pawnWalkLeft!important}.tendo-character.knight-official.is-running>.run-shadow{display:block!important;left:19%!important;right:19%!important;bottom:-8px!important;animation:pawnWalkShadow var(--pawn-walk-cycle,.72s) ease-in-out infinite!important}.tendo-character.knight-official.pawn-landing:before{animation:pawnLanding .18s cubic-bezier(.2,.9,.3,1) both!important}.quiz-stage-overlay{position:absolute;z-index:10015;box-sizing:border-box;overflow:hidden;padding:2.5% 2.2% 1.5%;border:3px solid #d6a33c;background:radial-gradient(circle at 50% 75%,#163257 0,#071426 45%,#02070f);color:#fff;font-family:Yu Gothic,Hiragino Kaku Gothic ProN,sans-serif;box-shadow:inset 0 0 50px #000,0 0 24px #d5942c88;pointer-events:none}.quiz-stage-overlay:before{content:"";position:absolute;inset:0;background:repeating-linear-gradient(112deg,transparent 0 58px,#e7b6530c 59px 61px);z-index:-1}.quiz-shield{position:absolute;left:50%;top:1.2%;transform:translate(-50%);padding:.25em 1.2em;border:1px solid #dcb359;border-radius:0 0 10px 10px;background:#0a1729;color:#ffe58f;font-size:clamp(9px,1.2vw,15px);font-weight:900;white-space:nowrap}.quiz-stage-overlay>h2{margin:3.3% 0 1.5%;text-align:center;color:#ffd36a;font-family:Yu Mincho,serif;font-size:clamp(18px,3.2vw,38px);letter-spacing:.08em;text-shadow:0 2px 7px #000,0 0 12px #d88d25}.quiz-layout{display:grid;grid-template-columns:1fr 1.55fr 1fr;gap:1.7%;height:61%}.quiz-team,.quiz-center{box-sizing:border-box;border:2px solid #b98735;border-radius:12px;background:#07182bd9;box-shadow:inset 0 0 18px #0008;padding:4%}.quiz-team h3{margin:0 0 9%;text-align:center;color:#ffd46f;font-size:clamp(11px,2vw,24px)}.quiz-team.gote h3{color:#ff7b3f}.quiz-bars{display:grid;gap:13%}.quiz-bar-row{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:6%;font-size:clamp(9px,1.45vw,17px)}.quiz-bar-row>b{display:grid;place-items:center;width:1.8em;height:1.8em;border:2px solid #d6a23e;transform:rotate(45deg);color:#ffe5a0}.quiz-bar-row>b:first-letter{transform:rotate(-45deg)}.quiz-bar-row>span{height:.65em;border:1px solid #8d6a2b;background:#030a12}.quiz-bar-row>span>i{display:block;height:100%;background:linear-gradient(90deg,#a56d13,#ffd05a);box-shadow:0 0 8px #ffc64e}.quiz-team.gote .quiz-bar-row>span>i{background:linear-gradient(90deg,#9e2d0b,#ff842f);box-shadow:0 0 8px #ff6f28}.quiz-bar-row>em{font-style:normal;font-weight:900;color:#ffe091;white-space:nowrap}.quiz-center{text-align:center;padding:3% 5%}.quiz-center>b{color:#eac476;font-size:clamp(9px,1.4vw,16px)}.quiz-center>h3{margin:2% 0 4%;font-size:clamp(12px,2vw,24px);line-height:1.35}.quiz-answers{display:grid;gap:5%}.quiz-answers>div{display:grid;grid-template-columns:2.4em 1fr;align-items:center;min-height:2.5em;border:2px solid #d1a03f;border-radius:8px;background:linear-gradient(90deg,#102943,#071727);font-size:clamp(13px,2.4vw,28px);font-weight:900}.quiz-answers i{font-style:normal;color:#ffd36a}.quiz-answers strong{padding-right:2.4em}.quiz-countdown{position:absolute;left:50%;bottom:7%;transform:translate(-50%);padding:.3em 1.2em;border:2px solid #d4a243;border-radius:10px;background:#081426;color:#f4d071;font-size:clamp(10px,1.7vw,20px);font-weight:900;white-space:nowrap}.quiz-countdown strong{color:#ff8b35;font-size:1.75em}.quiz-audience{position:absolute;left:50%;bottom:1.5%;transform:translate(-50%);margin:0;color:#fff;font-weight:800;font-size:clamp(8px,1.2vw,14px);white-space:nowrap}.quiz-stage-overlay.result .quiz-center{padding:2% 4%}.quiz-stage-overlay.result .quiz-center>h3{margin:1% 0 2%;font-size:clamp(10px,1.5vw,18px)}.quiz-correct{padding:.28em;border:2px solid #ffd466;border-radius:8px;background:#4a310dcc;color:#ffe087;font-size:clamp(14px,2.4vw,28px);font-weight:900;box-shadow:0 0 15px #ffc34d88}.quiz-team-choice{margin-top:2%;padding:.35em .55em;border:1px solid #a77b32;border-radius:7px;background:#0b2137;font-size:clamp(9px,1.35vw,16px);font-weight:900;text-align:left}.quiz-team-choice.gote-choice{color:#ff9a5e}.quiz-winner{margin-top:3%;padding:.25em;border:2px solid #f3bd4b;border-radius:8px;background:#311d08;color:#ffd05a;font-size:clamp(14px,2.5vw,30px);font-weight:900;text-shadow:0 2px 5px #000}.quiz-team[class*=picked-]{box-shadow:inset 0 0 22px #0008,0 0 18px #e2a63d88}.quiz-stage-overlay.result .quiz-shield{color:#fff0b1}.quiz-stage-overlay{padding:1.5% 2.2% 1.3%}.quiz-shield,.quiz-stage-overlay>h2{display:none!important}.quiz-header{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;min-height:10%;margin:0 0 1.5%;padding:0 2%;border:2px solid #c89637;border-radius:9px;background:#08172aee;box-sizing:border-box}.quiz-header:before{content:""}.quiz-header>h2{grid-column:2;margin:0;text-align:center;color:#ffd36a;font-family:Yu Mincho,serif;font-size:clamp(16px,3vw,36px);letter-spacing:.08em;text-shadow:0 2px 7px #000,0 0 12px #d88d25;white-space:nowrap}.quiz-header .quiz-countdown{position:static;grid-column:3;justify-self:end;transform:none;padding:.25em .65em;border:1px solid #d4a243;border-radius:7px;font-size:clamp(9px,1.35vw,16px)}.quiz-header .quiz-countdown strong{font-size:1.45em}.quiz-layout{height:66%;grid-template-columns:.95fr 1.5fr .95fr;gap:1.5%}.quiz-audience{bottom:.7%}.quiz-stage-overlay.result .quiz-header .quiz-countdown{color:#ffe08a}@media(max-width:600px){.quiz-stage-overlay{padding:1.2%}.quiz-header{min-height:9%;padding:0 1.5%}.quiz-header>h2{font-size:clamp(14px,4.2vw,24px)}.quiz-header .quiz-countdown{font-size:clamp(8px,2.3vw,12px)}.quiz-layout{height:68%;grid-template-columns:.85fr 1.45fr .85fr;gap:1%}.quiz-team,.quiz-center{padding:3%;border-radius:7px}.quiz-team h3{font-size:clamp(9px,2.5vw,13px);margin-bottom:8%}.quiz-bar-row{gap:3%;font-size:clamp(7px,2vw,10px)}.quiz-bar-row>b{width:1.4em;height:1.4em}.quiz-center>h3{font-size:clamp(10px,2.7vw,14px)}.quiz-answers>div{font-size:clamp(11px,3.2vw,17px);min-height:2.2em}.quiz-audience{font-size:clamp(7px,2vw,10px)}}.quiz-battle-context{position:absolute;left:2.2%;right:2.2%;bottom:1.5%;height:17%;display:grid;grid-template-columns:1fr 1.65fr 1fr;align-items:center;gap:2%;box-sizing:border-box;padding:.7% 2%;border:2px solid #b98735;border-radius:10px;background:#061323ee;box-shadow:inset 0 0 16px #0009}.quiz-battle-context>div:first-child,.quiz-battle-context>div:last-child{display:flex;align-items:center;justify-content:center;gap:.6em;font-weight:900}.quiz-battle-context>div>span{color:#f1c969;font-size:clamp(9px,1.3vw,15px)}.quiz-attack-flow{display:grid;grid-template-columns:auto 1fr;align-items:center;text-align:center}.quiz-attack-flow em{grid-row:1/3;font-style:normal;color:#ffb339;font-size:clamp(26px,5vw,58px);line-height:1}.quiz-attack-flow strong{font-size:clamp(9px,1.35vw,16px)}.quiz-attack-flow i{font-style:normal;color:#80d9ff;font-size:clamp(8px,1.15vw,14px);font-weight:900}.quiz-battle-context.result-context{grid-template-columns:.72fr 2.5fr .72fr;border-color:#e2b54e;background:#0b1b2df5}.quiz-battle-context.result-context p{margin:0;padding:.6em;border:1px solid #e2b54e;border-radius:8px;background:#3b260bd9;color:#ffe18b;font-size:clamp(10px,1.55vw,18px);font-weight:900;text-align:center}.floating-actor-host.is-defeated-visible{opacity:.58!important;filter:brightness(.78) drop-shadow(0 7px 5px #000)!important}@media(max-width:600px){.quiz-battle-context{left:1.2%;right:1.2%;height:18%;grid-template-columns:.8fr 1.8fr .8fr;padding:.5% 1%;gap:1%}.quiz-battle-context>div>span{font-size:clamp(7px,2vw,10px)}.quiz-attack-flow strong{font-size:clamp(7px,2vw,10px)}.quiz-attack-flow i{font-size:clamp(6px,1.8vw,9px)}.quiz-battle-context.result-context p{font-size:clamp(8px,2.2vw,11px)}}.quiz-context-side{position:relative;display:grid!important;grid-template-columns:auto 1fr;align-items:center;gap:.35em!important;height:100%;min-width:0}.quiz-context-character{position:relative;width:clamp(34px,5.5vw,66px);height:clamp(40px,6.5vw,78px)}.quiz-context-character>.tendo-character{position:absolute!important;left:50%!important;bottom:0!important;width:100%!important;height:100%!important;transform:translate(-50%) scale(.62)!important;transform-origin:50% 100%!important}.quiz-context-character>.tendo-character .tendo-foot-label{display:block!important}.quiz-context-character>em{position:absolute;z-index:5;left:50%;bottom:88%;transform:translate(-50%);padding:.22em .45em;border:2px solid #d29a32;border-radius:8px;background:#fff;color:#311b08;font-size:clamp(7px,1vw,12px);font-style:normal;font-weight:900;white-space:nowrap;box-shadow:0 3px 8px #000a}.quiz-context-character.quiz-winner-character>em{border-color:#57b7e8;color:#08334d}.quiz-context-character.quiz-loser{opacity:.75;filter:brightness(.82)}.shield-return-message{box-sizing:border-box;margin:10px 0 0;padding:9px 12px;border:2px solid #d3a340;border-radius:8px;background:#14253a;color:#fff1bd;text-align:center;box-shadow:0 0 14px #d9a43d55}.shield-return-message strong{display:block;color:#ffd36a}.shield-return-message span{display:block;margin-top:2px;font-weight:800}.shield-return-arrow{position:absolute;z-index:10080;transform:translate(-50%);display:grid;place-items:center;pointer-events:none;filter:drop-shadow(0 3px 4px #000)}.shield-return-arrow b{padding:.28em .55em;border:2px solid #e0aa3d;border-radius:8px;background:#fff;color:#3a2108;font-size:clamp(10px,1.3vw,15px);white-space:nowrap}.shield-return-arrow i{color:#ffb52f;font-size:36px;font-style:normal;font-weight:900;line-height:.8;animation:shieldArrowBounce .55s ease-in-out infinite alternate}@keyframes shieldArrowBounce{to{transform:translateY(7px)}}@media(max-width:600px){.quiz-context-character{width:30px;height:38px}.quiz-context-character>em{font-size:6px;padding:.15em .3em}.shield-return-message{font-size:12px;margin-top:7px;padding:7px}.shield-return-arrow b{font-size:9px}}@media(max-width:600px){header{height:54px;padding:0 10px;gap:8px}header>div:first-child{display:flex;align-items:center;min-width:0}.brand{margin-right:0;font-size:22px;line-height:1;white-space:nowrap}header small{display:none}.session-controls{min-width:0;margin-left:auto;flex-shrink:1}.status{padding:6px 8px;font-size:10px;line-height:1.1;white-space:nowrap}}.board-frame{grid-template-columns:minmax(0,1fr) 20px;grid-template-rows:20px minmax(0,1fr)}.file-labels-top{grid-column:1;grid-row:1;font-size:14px}.rank-labels-right{grid-column:2;grid-row:2}.file-labels-bottom,.rank-labels-left{display:none}.rank-labels{color:#f3ce76;font-family:Noto Sans JP,Yu Gothic,sans-serif;font-size:13px;font-weight:700;opacity:1;text-shadow:0 1px 2px #000}.board{grid-column:1;grid-row:2}@media(max-width:600px){.board-frame{grid-template-columns:minmax(0,1fr) 18px;grid-template-rows:18px minmax(0,1fr)}.file-labels-top{font-size:12px}.rank-labels{font-size:11px}}

/* Viewer demo v2: voting UI completely removed */
#votingStatus,#demoRanking,.demo-ranking{display:none!important}
.demo-controls>.form-note:first-of-type{display:none!important}
#opponent .clock,#me .clock{display:none!important}

/* ===== Future Shogi new character masters ===== */
.floating-runner.new-char .tendo-piece,
.floating-runner.new-char .tendo-arm,
.floating-runner.new-char .tendo-leg{display:none!important}
.floating-runner.new-char{
  background-repeat:no-repeat!important;
  background-position:center bottom!important;
  background-size:contain!important;
  overflow:visible!important;
  filter:drop-shadow(0 8px 5px #0009);
}
.floating-runner.new-char .tendo-foot-label{display:none!important}

.floating-runner.new-char.char-P.facing-front,
.floating-runner.new-char.char-P.facing-left,
.floating-runner.new-char.char-P.facing-right,
.floating-runner.new-char.char-P.battle-facing-left,
.floating-runner.new-char.char-P.battle-facing-right{
  background-image:url("/assets/characters/new/P_front.png")!important;
}
.floating-runner.new-char.char-P.facing-back{
  background-image:url("/assets/characters/new/P_back.png")!important;
}

.floating-runner.new-char.char-L.facing-front,
.floating-runner.new-char.char-L.facing-left,
.floating-runner.new-char.char-L.facing-right,
.floating-runner.new-char.char-L.battle-facing-left,
.floating-runner.new-char.char-L.battle-facing-right{
  background-image:url("/assets/characters/new/L_front.png")!important;
}
.floating-runner.new-char.char-L.facing-back{
  background-image:url("/assets/characters/new/L_back.png")!important;
}

.floating-runner.new-char.char-N.facing-front,
.floating-runner.new-char.char-N.facing-left,
.floating-runner.new-char.char-N.facing-right,
.floating-runner.new-char.char-N.battle-facing-left,
.floating-runner.new-char.char-N.battle-facing-right{
  background-image:url("/assets/characters/new/N_front.png")!important;
}
.floating-runner.new-char.char-N.facing-back{
  background-image:url("/assets/characters/new/N_back.png")!important;
}

.floating-runner.new-char.char-S.facing-front,
.floating-runner.new-char.char-S.facing-left,
.floating-runner.new-char.char-S.facing-right,
.floating-runner.new-char.char-S.battle-facing-left,
.floating-runner.new-char.char-S.battle-facing-right{
  background-image:url("/assets/characters/new/S_front.png")!important;
}
.floating-runner.new-char.char-S.facing-back{
  background-image:url("/assets/characters/new/S_back.png")!important;
}

.floating-runner.new-char.char-G.facing-front,
.floating-runner.new-char.char-G.facing-left,
.floating-runner.new-char.char-G.facing-right,
.floating-runner.new-char.char-G.battle-facing-left,
.floating-runner.new-char.char-G.battle-facing-right{
  background-image:url("/assets/characters/new/G_front.png")!important;
}
.floating-runner.new-char.char-G.facing-back{
  background-image:url("/assets/characters/new/G_back.png")!important;
}

.floating-runner.new-char.char-B.facing-front,
.floating-runner.new-char.char-B.facing-left,
.floating-runner.new-char.char-B.facing-right,
.floating-runner.new-char.char-B.battle-facing-left,
.floating-runner.new-char.char-B.battle-facing-right{
  background-image:url("/assets/characters/new/B_front.png")!important;
}
.floating-runner.new-char.char-B.facing-back{
  background-image:url("/assets/characters/new/B_back.png")!important;
}

.floating-runner.new-char.char-R.facing-front,
.floating-runner.new-char.char-R.facing-left,
.floating-runner.new-char.char-R.facing-right,
.floating-runner.new-char.char-R.battle-facing-left,
.floating-runner.new-char.char-R.battle-facing-right{
  background-image:url("/assets/characters/new/R_front.png")!important;
}
.floating-runner.new-char.char-R.facing-back{
  background-image:url("/assets/characters/new/R_back.png")!important;
}

.floating-runner.new-char.char-K.facing-front,
.floating-runner.new-char.char-K.facing-left,
.floating-runner.new-char.char-K.facing-right,
.floating-runner.new-char.char-K.battle-facing-left,
.floating-runner.new-char.char-K.battle-facing-right{
  background-image:url("/assets/characters/new/K_front.png")!important;
}
.floating-runner.new-char.char-K.facing-back{
  background-image:url("/assets/characters/new/K_back.png")!important;
}

/* Viewer 5x5 camera test */
.board-frame{position:relative}
.board-frame.viewer-camera-active{overflow:hidden!important}
.board-frame.viewer-camera-active #board{
  will-change:transform;
  position:relative;
  z-index:3;
}

/* Viewer character display size adjustment: 150% — clipping-safe.
   Enlarge the character box itself instead of enlarging the background
   inside the old 56x68 box. Camera zoom remains unchanged. */
.floating-actor-host .floating-runner.new-char{
  width:84px!important;
  height:102px!important;
  left:50%!important;
  bottom:0!important;
  transform:translate(-50%)!important;
  background-size:contain!important;
  background-position:center bottom!important;
  overflow:visible!important;
}

/* Moving-character normalization:
   Host is 92% of a board square; run scale is 86%.
   Visible size ≈ 79% of one square for ALL piece types. */
.floating-actor-host .floating-runner.new-char{
  width:100%!important;
  height:100%!important;
  left:50%!important;
  bottom:0!important;
  transform:translate(-50%)!important;
  background-size:contain!important;
  background-position:center bottom!important;
  background-repeat:no-repeat!important;
  overflow:visible!important;
}

.viewer-zoom-select{margin:10px 0;padding:10px 0;border-top:1px solid #31445a;border-bottom:1px solid #31445a}
.viewer-zoom-select>b{display:block;margin-bottom:8px;color:#f4d36b}
.viewer-zoom-buttons{display:flex;gap:7px}
.viewer-zoom-btn{flex:1;padding:9px 4px;border:1px solid #465d73;border-radius:8px;background:#122033;color:#fff;font-weight:800;cursor:pointer}
.viewer-zoom-btn.active{background:#d7a83e;color:#111;border-color:#f1c85d}

/* Top playback controls for desktop + mobile */
#opponent{display:flex!important;align-items:center!important;justify-content:space-between!important;gap:8px}
.viewer-top-controls{display:flex;gap:6px;margin-left:auto;flex:0 0 auto}
.viewer-top-controls button{
  min-width:58px;padding:6px 10px;border:1px solid #80692f;border-radius:8px;
  background:#172538;color:#fff;font-weight:800;cursor:pointer;font-size:14px
}
.viewer-top-controls button.viewer-start{background:#d7a83e;color:#15110a}
@media(max-width:600px){
  .viewer-top-controls button{min-width:50px;padding:6px 7px;font-size:13px}
}

/* Keep original app structure intact; only hide obsolete lower controls. */
#demoRestart,#demoPause{display:none!important}

/* Army color system */
.piece.sente,.board-piece.sente,.hand-piece.sente,.captured-piece.sente,
[data-side="SENTE"].piece,[data-side="SENTE"].board-piece,[data-side="SENTE"].hand-piece,
.hand .piece.sente,.cell .piece.sente{
  background:#efbd6a!important;
  background-color:#efbd6a!important;
  color:#1b1208!important;
}
.piece.gote,.board-piece.gote,.hand-piece.gote,.captured-piece.gote,
[data-side="GOTE"].piece,[data-side="GOTE"].board-piece,[data-side="GOTE"].hand-piece,
.hand .piece.gote,.cell .piece.gote{
  background:#d66a24!important;
  background-color:#d66a24!important;
  color:#fff!important;
}

/* Ground battlefield + characters permanently on the board */
#board{background-image:linear-gradient(rgba(70,42,18,.08),rgba(25,14,7,.12)),url("../assets/battle_ground_processed.jpg")!important;background-size:cover!important;background-position:center!important}
#board .square{background:transparent!important;border-color:rgba(247,220,159,.38)!important;overflow:visible!important}
.board-frame{background:#352315!important}
.board-character-piece{position:absolute!important;inset:0!important;width:100%!important;height:100%!important;display:flex!important;align-items:flex-end!important;justify-content:center!important;background:none!important;transform:none!important;overflow:visible!important;z-index:3}
.board-character-img{width:98%!important;height:98%!important;object-fit:contain!important;object-position:center bottom!important;display:block!important;filter:drop-shadow(0 5px 4px rgba(0,0,0,.5))}
.board-character-label{position:absolute;left:50%;bottom:1%;transform:translateX(-50%);min-width:1.45em;padding:1px 4px;border-radius:3px;background:rgba(255,249,230,.96);border:1px solid rgba(35,20,7,.88);color:#17100a;font-weight:900;font-size:clamp(12px,1.55vw,20px);line-height:1.15;box-shadow:0 1px 3px rgba(0,0,0,.45);z-index:5}
.image-character{overflow:visible!important}
.image-character .moving-character-img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;object-position:center bottom;filter:drop-shadow(0 6px 5px rgba(0,0,0,.5))}
.image-character.profile-left .moving-character-img{transform:perspective(260px) rotateY(-58deg) scaleX(1.22)}
.image-character.profile-right .moving-character-img{transform:perspective(260px) rotateY(58deg) scaleX(1.22)}
.image-character .tendo-foot-label{position:absolute!important;left:50%!important;bottom:0!important;transform:translateX(-50%)!important;background:rgba(255,249,230,.96)!important;color:#17100a!important;border:1px solid #2c1b0d!important;border-radius:3px!important;padding:1px 4px!important;z-index:8!important}

/* ===== Piece-name label refinement ===== */
.board-character-label{
  left:4%!important;
  bottom:4%!important;
  transform:none!important;
  min-width:1.25em!important;
  padding:1px 3px!important;
  font-size:clamp(10px,1.15vw,15px)!important;
  line-height:1.05!important;
  border-radius:3px!important;
}
.board-character-piece.sente-char .board-character-label{
  background:#efbd6a!important;
  color:#17100a!important;
  border-color:#7b4b19!important;
}
.board-character-piece.gote-char .board-character-label{
  background:#d66a24!important;
  color:#fff!important;
  border-color:#7b2f12!important;
}

/* During movement, only the character itself travels.
   The source square's small label remains until arrival/state commit. */
.image-character .tendo-foot-label{display:none!important}
.same-actor-img{
  width:100%!important;
  height:100%!important;
  object-fit:contain!important;
  object-position:center bottom!important;
  display:block!important;
  filter:drop-shadow(0 6px 5px rgba(0,0,0,.5));
}

/* Standing and moving character sizes stay visually matched. */
.board-character-img{width:98%!important;height:98%!important}
.floating-actor-host{overflow:visible!important}

/* =========================================================
   v2: board-edge character clipping fix
   Keep the character full-sized; move edge characters inward
   instead of shrinking/cropping them.
   ========================================================= */

/* Piece labels: Gothic/sans-serif for small-size readability */
.board-character-label,
.tendo-foot-label{
  font-family:"Yu Gothic","YuGothic","Meiryo","Noto Sans JP",sans-serif!important;
  font-weight:900!important;
}

/* Sente/Gote label colors */
.board-character-piece.sente-char .board-character-label{
  background:#efbd6a!important;
  color:#111!important;
}
.board-character-piece.gote-char .board-character-label{
  background:#b94a16!important;
  color:#fff!important;
}

/* Do not let the board/frame crop characters that touch its outer edge. */
#board,
.board-frame,
.board-grid{
  overflow:visible!important;
}

/* Keep normal pieces centered. */
.board-character-img{
  transform:translate(0,0);
  transform-origin:center bottom;
}

/* Files 9 and 1 are the left/right edges in the displayed board.
   Pull the full-size image inward without changing its scale. */
.square[data-file="9"] .board-character-img{
  transform:translateX(13%)!important;
}
.square[data-file="1"] .board-character-img{
  transform:translateX(-13%)!important;
}

/* Top/bottom ranks: keep helmets/feet inside the visible board area. */
.square[data-rank="1"] .board-character-img{
  object-position:center 8%!important;
}
.square[data-rank="9"] .board-character-img{
  object-position:center 92%!important;
}

/* Corner pieces need both horizontal and vertical protection. */
.square[data-file="9"][data-rank="1"] .board-character-img{
  transform:translateX(13%)!important;
  object-position:center 8%!important;
}
.square[data-file="1"][data-rank="1"] .board-character-img{
  transform:translateX(-13%)!important;
  object-position:center 8%!important;
}
.square[data-file="9"][data-rank="9"] .board-character-img{
  transform:translateX(13%)!important;
  object-position:center 92%!important;
}
.square[data-file="1"][data-rank="9"] .board-character-img{
  transform:translateX(-13%)!important;
  object-position:center 92%!important;
}

/* Moving actor itself must never be clipped by its temporary host. */
.floating-actor-host,
.floating-actor-host .image-character,
.floating-actor-host .same-actor-img{
  overflow:visible!important;
}

/* v3: piece-name badges */
.board-character-label{
  left:4%!important;
  right:auto!important;
  bottom:4%!important;
  transform:none!important;
  box-sizing:border-box!important;
  min-width:1.45em!important;
  height:1.45em!important;
  padding:0 2px!important;
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  text-align:center!important;
  white-space:nowrap!important;
  overflow:visible!important;
  line-height:1!important;
  font-family:"Yu Gothic","YuGothic","Meiryo","Noto Sans JP",sans-serif!important;
  font-weight:900!important;
}
.board-character-piece.sente-char .board-character-label{
  background:#efbd6a!important;color:#111!important;
}
.board-character-piece.gote-char .board-character-label{
  background:#a93c0d!important;color:#fff!important;
}

/* v3: same actor remains the same size/pose through arrival */
.image-character.profile-left .moving-character-img,
.image-character.profile-right .moving-character-img{
  transform:none!important;
}
.same-actor-img{
  width:98%!important;
  height:98%!important;
  object-fit:contain!important;
  object-position:center bottom!important;
  transform:none!important;
}

/* v4: name badge — glyph always centered inside the frame */
.board-character-label{
  box-sizing:border-box!important;
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  text-align:center!important;
  text-indent:0!important;
  padding:0!important;
  min-width:1.55em!important;
  width:1.55em!important;
  height:1.55em!important;
  line-height:1!important;
  white-space:nowrap!important;
  overflow:visible!important;
  font-family:"Yu Gothic","YuGothic","Meiryo","Noto Sans JP",sans-serif!important;
  font-weight:900!important;
}
/* Keep lower-left placement, but prevent the badge itself from falling off the board edge. */
.square[data-file="9"] .board-character-label{left:10%!important}
.square[data-file="1"] .board-character-label{left:4%!important}

/* v5.1: only the currently moving / just-arrived piece has a badge */
.board-character-label.inactive-piece-label{display:none!important}
.board-character-label.active-piece-label{display:flex!important}
.floating-actor-host .tendo-foot-label{
 display:flex!important;align-items:center!important;justify-content:center!important;
}

/* ===== v6 Product UI ===== */
#votingStatus,.vote-panel,.demo-vote,.candidate-panel,.viewer-zoom-select{display:none!important}
.viewer-product-toolbar{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:8px 0 10px}
.viewer-phase-buttons{display:flex;gap:6px;flex:1}
.viewer-phase,.viewer-settings-open,.viewer-settings-close{
  border:1px solid #6f5630;border-radius:8px;background:#172538;color:#fff;
  padding:8px 12px;font-weight:800;cursor:pointer
}
.viewer-phase.active{background:#d7a83e;color:#15110a}
.viewer-settings-open{flex:0 0 auto}
.viewer-settings-panel{
  position:absolute;right:12px;top:58px;z-index:5000;width:min(330px,calc(100vw - 24px));
  background:#101a27;border:1px solid #7b6239;border-radius:12px;padding:14px;
  box-shadow:0 12px 30px rgba(0,0,0,.45);color:#fff
}
.viewer-settings-panel[hidden]{display:none!important}
.viewer-settings-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px;font-size:18px}
.viewer-settings-close{padding:3px 9px;font-size:18px}
.viewer-settings-panel label{display:grid;grid-template-columns:1fr 145px;align-items:center;gap:10px;margin:8px 0}
.viewer-settings-panel select{width:100%;padding:7px;border-radius:7px;background:#1a2a3c;color:#fff;border:1px solid #526477}
.viewer-top-controls .viewer-stop{background:#43201c!important}
@media(max-width:600px){
 .viewer-product-toolbar{align-items:stretch}
 .viewer-phase-buttons{display:grid;grid-template-columns:repeat(4,1fr);gap:4px}
 .viewer-phase{padding:7px 3px;font-size:12px}
 .viewer-settings-open{padding:7px 9px}
 .viewer-settings-panel{position:fixed;top:58px;right:8px}
}

/* More visible soil texture, including zoomed view */
#board{
  background-image:
    radial-gradient(circle at 20% 30%,rgba(205,158,94,.16) 0 2px,transparent 3px),
    radial-gradient(circle at 72% 62%,rgba(42,25,12,.22) 0 3px,transparent 4px),
    radial-gradient(circle at 45% 78%,rgba(225,187,127,.10) 0 1px,transparent 2px),
    repeating-linear-gradient(17deg,rgba(59,36,18,.08) 0 2px,transparent 2px 8px),
    linear-gradient(rgba(85,51,25,.05),rgba(29,17,8,.10)),
    url("../assets/battle_ground_processed.jpg")!important;
  background-size:37px 37px,53px 53px,29px 29px,auto,auto,cover!important;
  background-blend-mode:multiply,normal,screen,normal,normal,normal!important;
}

/* Active-piece label is always centered under the actor */
.board-character-label.active-piece-label{
  left:50%!important;right:auto!important;bottom:2%!important;
  transform:translateX(-50%)!important
}
.floating-actor-host .tendo-foot-label{
  left:50%!important;right:auto!important;bottom:0!important;
  transform:translateX(-50%)!important
}

html[data-viewer-board="wood"] #board{
 background-image:linear-gradient(rgba(255,255,255,.04),rgba(0,0,0,.05)),
 repeating-linear-gradient(90deg,#bd8747 0 10%,#c89454 10% 20%)!important;
 background-size:auto!important
}
html[data-viewer-board="space"] #board{
 background-image:radial-gradient(circle at 20% 30%,#fff 0 1px,transparent 1.5px),
 radial-gradient(circle at 70% 65%,#a8cfff 0 1px,transparent 1.5px),
 linear-gradient(#08101f,#111a36)!important;
 background-size:47px 47px,71px 71px,auto!important
}

/* ===== 正規Viewer: 棋譜ライブラリ ===== */
.viewer-library-bar{
 display:flex;align-items:center;gap:8px;margin:0 0 10px;padding:8px;
 border:1px solid #5d4a2c;border-radius:10px;background:#0d1924
}
.viewer-library-bar button{
 border:1px solid #80692f;border-radius:8px;background:#172538;color:#fff;
 padding:8px 12px;font-weight:800;cursor:pointer
}
.viewer-library-bar .viewer-library-open{background:#d7a83e;color:#171109}
#viewerCurrentKifu{margin-left:auto;color:#f0d98c;font-weight:800;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.viewer-library-modal{
 position:fixed;inset:0;z-index:12000;background:rgba(0,0,0,.72);
 display:flex;align-items:center;justify-content:center;padding:18px
}
.viewer-library-modal[hidden]{display:none!important}
.viewer-library-card{
 width:min(760px,96vw);max-height:88vh;overflow:auto;background:#0e1824;color:#fff;
 border:1px solid #826a3d;border-radius:16px;padding:18px;box-shadow:0 24px 80px #000b
}
.viewer-library-head{display:flex;align-items:center;justify-content:space-between}
.viewer-library-head h2{margin:0;color:#f1d47b}
.viewer-library-close{border:0;background:#263448;color:#fff;border-radius:8px;padding:5px 11px;font-size:22px;cursor:pointer}
.viewer-library-card h3{margin:20px 0 8px;color:#f0d98c}
.viewer-kifu-list{display:grid;gap:8px}
.viewer-kifu-item{
 text-align:left;padding:12px;border:1px solid #46586c;border-radius:10px;background:#172536;color:#fff;cursor:pointer
}
.viewer-kifu-item b,.viewer-kifu-item span,.viewer-kifu-item small{display:block}
.viewer-kifu-item span{margin-top:4px;color:#d5dde6}
.viewer-kifu-item small{margin-top:5px;color:#9fb0bf}
.viewer-kifu-item.pending{opacity:.62;cursor:default}
@media(max-width:600px){
 .viewer-library-bar{flex-wrap:wrap}
 #viewerCurrentKifu{width:100%;margin-left:0}
 .viewer-library-card{padding:12px}
}

/* v7.1: Human Shogi is LIVE-only; archives are in Kifu List */
.viewer-live-open{background:#8f211b!important;border-color:#d95b4f!important}
.live-badge{display:inline-block;margin-left:4px;padding:1px 5px;border-radius:10px;background:#ff3b30;color:#fff;font-size:10px;vertical-align:1px}
.viewer-live-modal{position:fixed;inset:0;z-index:12500;background:rgba(0,0,0,.74);display:flex;align-items:center;justify-content:center;padding:18px}
.viewer-live-modal[hidden]{display:none!important}
.viewer-live-card{width:min(560px,94vw);background:#0e1824;color:#fff;border:1px solid #8d443b;border-radius:16px;padding:18px;box-shadow:0 24px 80px #000b}
.viewer-live-close{border:0;background:#263448;color:#fff;border-radius:8px;padding:5px 11px;font-size:22px;cursor:pointer}
.viewer-live-status{display:flex;align-items:center;gap:9px;margin:22px 0 10px;padding:12px;border-radius:10px;background:#172536}
.live-dot{width:11px;height:11px;border-radius:50%;background:#e53b31;box-shadow:0 0 0 5px rgba(229,59,49,.13)}
.viewer-live-info{margin-top:18px;display:flex;justify-content:space-between;gap:15px;border-top:1px solid #33465a;padding-top:12px}
.viewer-live-info span{color:#9fb0bf}.viewer-live-info strong{color:#f0d98c}

/* v7.2: 演出速度は設定へ移動 */
.viewer-product-toolbar + .speed-row,
.demo-controls .speed-row,
.demo-controls [data-speed],
.demo-controls .speed-label,
.viewer-speed-inline{display:none!important}

/* v7.2 product layout */
.viewer-match-panel{
  margin:0 0 10px;padding:10px 12px;border:1px solid #43566a;border-radius:10px;background:#111d2a
}
.viewer-match-title{font-size:12px;color:#9fb0bf;margin-bottom:4px}
.viewer-match-name{font-weight:900;color:#f0d98c;font-size:16px}
.viewer-match-meta{margin-top:4px;color:#d5dde6;font-size:13px;line-height:1.5}
.viewer-modebar{
  display:flex;align-items:center;gap:7px;flex-wrap:wrap;margin:0 0 10px;padding:8px 10px;
  border:1px solid #3c4e61;border-radius:9px;background:#0e1925
}
.viewer-modebar-label{color:#9fb0bf;font-size:12px;margin-right:3px}
.viewer-mode-chip{padding:5px 9px;border-radius:14px;background:#203044;color:#c9d4de;font-weight:800;font-size:12px}
.viewer-mode-chip.active{background:#d7a83e;color:#171109}
.viewer-kifu-item.selected{border-color:#d7a83e;box-shadow:inset 0 0 0 1px #d7a83e}
.viewer-live-list{display:grid;gap:9px;margin-top:12px}
.viewer-live-item{padding:12px;text-align:left;border:1px solid #4e6073;border-radius:10px;background:#172536;color:#fff;cursor:pointer}
.viewer-live-item b,.viewer-live-item span,.viewer-live-item small{display:block}
.viewer-live-item span{margin-top:4px}.viewer-live-item small{margin-top:4px;color:#9fb0bf}
.viewer-live-item.active{border-color:#e64b3f}
.viewer-live-item.future{opacity:.55}
.viewer-modal-lead{color:#c4d0da}

/* v8 Tendo: active piece name is always centered at the feet */
.board-character-label.active-piece-label,
.square[data-file="9"] .board-character-label.active-piece-label,
.square[data-file="1"] .board-character-label.active-piece-label{
 left:50%!important;right:auto!important;bottom:2%!important;
 transform:translateX(-50%)!important
}

/* Speed belongs only in Settings */
#speedControls,.speed-controls,.demo-speed,.viewer-speed,
button[data-speed],select[data-speed],.speed-preset{display:none!important}
.viewer-settings-panel #viewerSpeedSetting{display:block!important}

/* Tendo ground: more granular soil, less plywood-flat */
html:not([data-viewer-board="wood"]):not([data-viewer-board="space"]) #board,
html[data-viewer-board="ground"] #board{
 background-image:
  radial-gradient(ellipse at 18% 24%,rgba(45,27,13,.28) 0 1.5px,transparent 2.5px),
  radial-gradient(ellipse at 67% 58%,rgba(218,170,103,.16) 0 1px,transparent 2px),
  radial-gradient(ellipse at 41% 81%,rgba(54,34,18,.20) 0 2px,transparent 3px),
  repeating-linear-gradient(24deg,rgba(44,27,14,.07) 0 1px,transparent 1px 6px),
  url("../assets/battle_ground_processed.jpg")!important;
 background-size:23px 19px,31px 27px,47px 41px,auto,cover!important;
 background-blend-mode:multiply,screen,multiply,normal,normal!important;
}

/* v9 Traditional verification UI */
.viewer-top-menu{display:grid!important;grid-template-columns:1.15fr 1fr .85fr!important;gap:8px!important;align-items:stretch!important}
.viewer-top-menu .viewer-live-open:disabled{opacity:.42!important;cursor:not-allowed!important;filter:grayscale(.35)}
.viewer-product-toolbar{display:block!important;margin:10px 0 7px!important}
.viewer-phase-buttons{display:grid!important;grid-template-columns:repeat(4,1fr)!important;gap:7px!important}
.viewer-playback-controls{display:grid;grid-template-columns:1fr 1fr 1.5fr;gap:7px;margin:0 0 10px}
.viewer-playback-controls button{min-height:42px;font-weight:800}
.viewer-library-import{padding:0 0 12px}.viewer-library-import button{width:100%;min-height:40px}
.viewer-settings-open{display:block!important}
@media(max-width:600px){.viewer-top-menu{grid-template-columns:1fr 1fr 1fr!important}.viewer-playback-controls{grid-template-columns:1fr 1fr 1.5fr}.viewer-playback-controls button{font-size:12px;padding:7px 4px}}

/* v10: settings footer */
.viewer-settings-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:16px;padding-top:12px;border-top:1px solid #31445a}
.viewer-settings-actions button{min-width:96px;padding:9px 16px;border:1px solid #80692f;border-radius:8px;background:#172538;color:#fff;font-weight:800;cursor:pointer}
.viewer-settings-actions .primary{background:#d7a83e;color:#171109}

/* v10: traditional = formal honkaku shogi board impression */
html[data-viewer-board="wood"] #board{
 background-color:#d6a458!important;
 background-image:
   linear-gradient(90deg,rgba(91,51,18,.07),transparent 14%,rgba(255,240,187,.09) 31%,transparent 53%,rgba(92,49,15,.06) 78%,transparent),
   repeating-linear-gradient(2deg,rgba(95,55,20,.035) 0 1px,transparent 1px 7px),
   linear-gradient(180deg,#ddb267 0%,#d5a257 48%,#c99349 100%)!important;
 background-size:100% 100%,100% 11px,100% 100%!important;
 box-shadow:inset 0 0 0 4px #7b4a1e,inset 0 0 26px rgba(70,38,10,.18)!important
}
html[data-viewer-board="wood"] #board .square{border-color:rgba(73,43,17,.58)!important}

/* v10: future = deep-space board */
html[data-viewer-board="space"] #board{
 background-color:#050817!important;
 background-image:
   radial-gradient(ellipse at 22% 18%,rgba(77,108,220,.32),transparent 28%),
   radial-gradient(ellipse at 78% 72%,rgba(126,52,180,.28),transparent 30%),
   radial-gradient(circle at 12% 21%,#fff 0 1px,transparent 1.7px),
   radial-gradient(circle at 63% 37%,#b9d8ff 0 1.2px,transparent 1.9px),
   radial-gradient(circle at 84% 14%,#fff 0 .8px,transparent 1.5px),
   linear-gradient(145deg,#030611,#0a1030 52%,#09051d)!important;
 background-size:100% 100%,100% 100%,43px 47px,71px 67px,89px 83px,100% 100%!important;
 box-shadow:inset 0 0 38px rgba(72,108,255,.22)!important
}
html[data-viewer-board="space"] #board .square{border-color:rgba(124,166,255,.28)!important}

/* v11: 棋譜選択は「選択→読み込む / キャンセル」。OSファイル選択は使わない */
.viewer-library-actions{display:flex;justify-content:flex-end;gap:10px;position:sticky;bottom:-18px;margin:18px -18px -18px;padding:14px 18px;background:#0e1824;border-top:1px solid #33465a}
.viewer-library-actions button{min-width:110px;padding:9px 16px;border-radius:8px;font-weight:900;cursor:pointer}
.viewer-library-load{background:#d7a83e;color:#171109;border:1px solid #e8c25e}
.viewer-library-cancel{background:#263448;color:#fff;border:1px solid #526477}

/* v12: Traditional mode — formal top-down honkaku shogi board and wooden koma */
html[data-viewer-board="wood"] .board-frame{background:#2a1608!important;padding:8px 8px 10px;border-radius:3px;box-shadow:0 16px 38px #000a, inset 0 0 0 1px #7b4b20}
html[data-viewer-board="wood"] #board{border:5px solid #7b4a20!important;border-radius:2px;background-color:#d9aa62!important;background-image:repeating-linear-gradient(91deg,rgba(104,61,21,.035) 0 1px,transparent 1px 9px),repeating-linear-gradient(2deg,rgba(255,244,207,.07) 0 1px,transparent 1px 13px),linear-gradient(90deg,#d2a058,#e3b86e 20%,#d7a55c 48%,#e4b970 72%,#ce9850)!important;box-shadow:inset 0 0 18px rgba(82,43,11,.15),0 3px 0 #4e2c10,0 8px 18px #0008!important}
html[data-viewer-board="wood"] #board .square{border-right:1.35px solid rgba(57,31,11,.78)!important;border-bottom:1.35px solid rgba(57,31,11,.78)!important}
html[data-viewer-pieces="regular"] #board .piece{width:72%!important;height:80%!important;clip-path:polygon(50% 0,91% 17%,86% 100%,14% 100%,9% 17%)!important;background:linear-gradient(96deg,#d6a35c 0%,#f0c77d 20%,#e1b269 55%,#c98e45 100%)!important;border:1px solid #8c5b25!important;color:#171009!important;font-family:"Yu Mincho","Hiragino Mincho ProN",serif!important;font-weight:900!important;text-shadow:0 1px 0 rgba(255,238,190,.35)!important;filter:drop-shadow(0 4px 2px rgba(45,24,8,.48))!important;box-shadow:inset 1px 0 rgba(255,239,190,.35),inset -1px -2px rgba(102,55,19,.18)!important}
html[data-viewer-pieces="regular"] #board .piece.enemy{transform:rotate(180deg)!important;background:linear-gradient(96deg,#d6a35c 0%,#f0c77d 20%,#e1b269 55%,#c98e45 100%)!important;color:#171009!important;border-color:#8c5b25!important;text-shadow:0 1px 0 rgba(255,238,190,.35)!important}
html[data-viewer-pieces="regular"] #board .piece.promoted{color:#a32118!important}
html[data-viewer-pieces="regular"] .hand-piece{background:linear-gradient(#e7bb73,#c88f47)!important;color:#171009!important;border-color:#8c5b25!important;font-family:"Yu Mincho","Hiragino Mincho ProN",serif!important;font-weight:900!important}

/* v13 Traditional = pure standard shogi presentation */
html[data-viewer-mode="traditional"] .board-character-img,
html[data-viewer-mode="traditional"] .moving-character-img,
html[data-viewer-mode="traditional"] .same-actor-img,
html[data-viewer-mode="traditional"] .image-character,
html[data-viewer-mode="traditional"] .tendo-character{
  display:none!important;
}
html[data-viewer-mode="traditional"] .board-character-piece{
  position:absolute!important;
  inset:7%!important;
  width:auto!important;
  height:auto!important;
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  background:linear-gradient(155deg,#f4d89a 0%,#e3b96c 56%,#c99245 100%)!important;
  clip-path:polygon(50% 0,96% 25%,88% 100%,12% 100%,4% 25%)!important;
  border:none!important;
  box-shadow:
    inset 0 0 0 1px rgba(89,51,13,.4),
    inset 0 -5px 8px rgba(112,63,17,.18),
    0 4px 4px rgba(49,25,5,.28)!important;
  transform:none!important;
  color:#111!important;
  overflow:visible!important;
}
html[data-viewer-mode="traditional"] .board-character-label{
  display:flex!important;
  position:static!important;
  transform:none!important;
  width:auto!important;
  height:auto!important;
  min-width:0!important;
  padding:0!important;
  margin:4% 0 0!important;
  background:transparent!important;
  border:0!important;
  box-shadow:none!important;
  color:#15100a!important;
  font-family:"Yu Mincho","Hiragino Mincho ProN","MS PMincho",serif!important;
  font-size:clamp(18px,2.7vw,31px)!important;
  font-weight:900!important;
  line-height:1!important;
  align-items:center!important;
  justify-content:center!important;
}
html[data-viewer-mode="traditional"] .board-character-piece.gote-char{
  transform:rotate(180deg)!important;
}
html[data-viewer-mode="traditional"] .board-character-piece.gote-char .board-character-label{
  transform:rotate(180deg)!important;
}

html[data-viewer-mode="traditional"] #board,
html[data-viewer-board="wood"] #board{
  background:
    repeating-linear-gradient(
      90deg,
      rgba(91,47,11,.06) 0px,
      rgba(91,47,11,.06) 1px,
      transparent 1px,
      transparent 7px
    ),
    repeating-linear-gradient(
      88deg,
      rgba(255,246,213,.08) 0px,
      rgba(255,246,213,.08) 2px,
      transparent 2px,
      transparent 19px
    ),
    linear-gradient(90deg,#d8a95e 0%,#efc777 15%,#d6a254 34%,#efc87c 52%,#d5a057 70%,#e7bd72 100%)!important;
  background-size:auto!important;
  box-shadow:
    inset 0 0 28px rgba(89,48,12,.22),
    inset 0 0 0 5px #9b5d25,
    0 8px 24px rgba(0,0,0,.35)!important;
}
html[data-viewer-mode="traditional"] #board .square{
  background:transparent!important;
  border-color:rgba(52,31,9,.62)!important;
}

.viewer-play-row{display:flex;gap:7px;flex-wrap:wrap;margin-top:8px}
.viewer-play-row button{
 border:1px solid #66502e;border-radius:8px;background:#172538;color:#fff;
 padding:8px 12px;font-weight:800;cursor:pointer
}
.viewer-play-row .viewer-start{background:#d7a83e;color:#171109}
.viewer-play-row .viewer-stop{background:#5b261d}

/* v14: Traditional is the core, ordinary-shogi verification mode */
html[data-viewer-mode="traditional"] .board-character-img,
html[data-viewer-mode="traditional"] .moving-character-img,
html[data-viewer-mode="traditional"] .same-actor-img,
html[data-viewer-mode="traditional"] .image-character,
html[data-viewer-mode="traditional"] .tendo-character,
html[data-viewer-mode="traditional"] .battle-overlay,
html[data-viewer-mode="traditional"] .battle-stage,
html[data-viewer-mode="traditional"] .speech-bubble{
 display:none!important;
}
html[data-viewer-mode="traditional"] #board{
 transform:none!important;
 scale:1!important;
 background:
  repeating-linear-gradient(91deg,rgba(86,48,13,.055) 0 1px,transparent 1px 8px),
  repeating-linear-gradient(89deg,rgba(255,247,217,.09) 0 2px,transparent 2px 23px),
  linear-gradient(90deg,#d6a354 0%,#ebc274 14%,#d9a75b 30%,#efc980 48%,#d7a257 67%,#e9bf72 84%,#d3a052 100%)!important;
 box-shadow:inset 0 0 24px rgba(83,44,8,.2),inset 0 0 0 6px #986027,0 8px 22px rgba(0,0,0,.35)!important;
}
html[data-viewer-mode="traditional"] #board .square{
 background:transparent!important;
 border-color:rgba(48,28,8,.7)!important;
}
html[data-viewer-mode="traditional"] .board-character-piece{
 inset:9%!important;
 background:linear-gradient(155deg,#f1d28d,#deb267 58%,#c58c42)!important;
 clip-path:polygon(50% 0,96% 25%,88% 100%,12% 100%,4% 25%)!important;
 box-shadow:inset 0 0 0 1px rgba(82,45,10,.42),0 3px 4px rgba(54,28,5,.3)!important;
}
html[data-viewer-mode="traditional"] .board-character-label{
 display:flex!important;
 position:absolute!important;
 inset:0!important;
 align-items:center!important;
 justify-content:center!important;
 margin:0!important;padding:0!important;
 background:transparent!important;border:0!important;box-shadow:none!important;
 color:#111!important;
 font-family:"Yu Mincho","Hiragino Mincho ProN","MS PMincho",serif!important;
 font-weight:900!important;
 font-size:clamp(17px,2.5vw,29px)!important;
 line-height:1!important;
}
html[data-viewer-mode="traditional"] .viewer-zoom-select,
html[data-viewer-mode="traditional"] [data-zoom],
html[data-viewer-mode="traditional"] .zoom-controls{display:none!important}

/* v15 Traditional: ordinary shogi only */
html[data-viewer-mode="traditional"] .board-character-piece{
  background:linear-gradient(160deg,#f1d18b 0%,#e5bb70 58%,#c98f43 100%)!important;
  clip-path:polygon(50% 0%,95% 24%,87% 100%,13% 100%,5% 24%)!important;
  box-shadow:inset 0 0 0 1px rgba(80,44,8,.42),0 3px 5px rgba(45,23,4,.30)!important;
  overflow:hidden!important;
}
html[data-viewer-mode="traditional"] .board-character-piece img,
html[data-viewer-mode="traditional"] .board-character-piece picture,
html[data-viewer-mode="traditional"] .board-character-piece canvas,
html[data-viewer-mode="traditional"] .board-character-piece svg{
  display:none!important;
}
html[data-viewer-mode="traditional"] .board-character-label{
  display:flex!important;
  position:absolute!important;
  inset:0!important;
  align-items:center!important;
  justify-content:center!important;
  color:#111!important;
  background:transparent!important;
  border:0!important;
  box-shadow:none!important;
  font-family:"Yu Mincho","Hiragino Mincho ProN","MS PMincho",serif!important;
  font-weight:900!important;
  font-size:clamp(18px,2.55vw,30px)!important;
  line-height:1!important;
  text-align:center!important;
}
html[data-viewer-mode="traditional"] .board-character-piece.gote-char{
  transform:rotate(180deg)!important;
}
html[data-viewer-mode="traditional"] .board-character-piece.gote-char .board-character-label{
  transform:rotate(180deg)!important;
}
/* stronger natural board grain */
html[data-viewer-mode="traditional"] #board{
 background:
  repeating-linear-gradient(90deg,rgba(88,47,10,.075) 0 1px,transparent 1px 5px),
  repeating-linear-gradient(91deg,rgba(255,244,204,.08) 0 2px,transparent 2px 17px),
  repeating-linear-gradient(89deg,rgba(113,66,18,.045) 0 1px,transparent 1px 31px),
  linear-gradient(90deg,#d5a153 0%,#edc47a 13%,#d7a459 29%,#efc77b 46%,#d4a052 64%,#e9bf73 82%,#d3a050 100%)!important;
}

.viewer-version{
  margin-left:12px;
  font-size:12px;
  letter-spacing:.08em;
  color:#d9ad4c;
  font-weight:800;
}

.viewer-demo-label,.viewer-demo-footer{display:none!important}

/* Ver.16 — Traditional mode must render ordinary shogi, never character art */
html[data-viewer-mode="traditional"] #board .piece img,
html[data-viewer-mode="traditional"] #board .board-character-img,
html[data-viewer-mode="traditional"] #board .moving-character-img,
html[data-viewer-mode="traditional"] #board .image-character img{
 display:none!important;
}
html[data-viewer-mode="traditional"] #board .board-character-piece{
 display:flex!important;align-items:center!important;justify-content:center!important;
 inset:8%!important;width:auto!important;height:auto!important;
 background:linear-gradient(155deg,#f0d28f 0%,#dfb66b 62%,#c78d43 100%)!important;
 clip-path:polygon(50% 0,95% 24%,87% 100%,13% 100%,5% 24%)!important;
 transform:none!important;
}
html[data-viewer-mode="traditional"] #board .board-character-piece.gote-char{transform:rotate(180deg)!important}
html[data-viewer-mode="traditional"] #board .board-character-label{
 display:flex!important;position:absolute!important;inset:0!important;
 align-items:center!important;justify-content:center!important;
 color:#111!important;background:none!important;border:0!important;box-shadow:none!important;
 font-family:"Yu Mincho","Hiragino Mincho ProN","MS PMincho",serif!important;
 font-size:clamp(18px,2.6vw,31px)!important;font-weight:900!important;
}
html[data-viewer-mode="traditional"] #board .board-character-piece.gote-char .board-character-label{
 transform:rotate(180deg)!important;
}

.header-version{margin-left:10px;color:#e0b34c;font-size:12px;font-weight:800;letter-spacing:.08em}

/* Ver.17: Gote text follows the rotated piece; do NOT counter-rotate the glyph */
html[data-viewer-mode="traditional"] #board .board-character-piece.gote-char{
  transform:rotate(180deg)!important;
}
html[data-viewer-mode="traditional"] #board .board-character-piece.gote-char .board-character-label{
  transform:none!important;
}

/* Ver.18 — video-style kifu controls */
.viewer-video-controls{
  display:grid;
  grid-template-columns:repeat(5,1fr);
  gap:7px;
  margin-top:10px;
}
.viewer-video-controls button{
  min-height:46px;
  border:1px solid #5b6d80;
  border-radius:9px;
  background:#172538;
  color:#fff;
  font-size:20px;
  font-weight:900;
  cursor:pointer;
}
.viewer-video-controls button:hover{background:#21334a}
.viewer-stop-video{background:#4e2520!important;border-color:#7f463d!important}
.viewer-autoplay-row{margin-top:8px}
.viewer-autoplay-toggle{
  width:100%;
  min-height:42px;
  border:1px solid #80692f;
  border-radius:9px;
  background:#172538;
  color:#fff;
  font-weight:900;
  cursor:pointer;
}
.viewer-autoplay-toggle.active{
  background:#d7a83e;
  color:#171109;
}
@media(max-width:600px){
  .viewer-video-controls{gap:4px}
  .viewer-video-controls button{min-height:42px;font-size:17px}
}

/* Ver.19: promoted pieces show only one label */
html[data-viewer-mode="traditional"] #board .board-character-piece.promoted{
  font-size:0!important;
  color:transparent!important;
  text-shadow:none!important;
}
html[data-viewer-mode="traditional"] #board .board-character-piece.promoted .board-character-label{
  display:flex!important;
  color:#b51f18!important;
  font-size:clamp(17px,2.35vw,28px)!important;
  font-family:"Yu Mincho","Hiragino Mincho ProN","MS PMincho",serif!important;
  text-shadow:none!important;
}

.viewer-match-result{
  margin-top:7px;
  padding-top:7px;
  border-top:1px solid #33465a;
  color:#f2cf71;
  font-size:13px;
  line-height:1.55;
  font-weight:800;
}

header small,.brand+small,#connection{display:none!important}

/* Single, non-duplicated right panel */
.viewer-main-controls{display:flex;flex-direction:column;gap:10px;position:relative}
.viewer-control-card{border:1px solid #33465a;border-radius:10px;padding:10px;background:#101c29}
.viewer-control-caption{font-size:12px;color:#9fb1c4;margin-bottom:7px}
.viewer-mode-buttons{display:flex;gap:5px;flex-wrap:wrap}
.viewer-mode-buttons button,.viewer-detail-settings,.viewer-source-buttons button,.viewer-phase-buttons button,.viewer-auto-buttons button,.viewer-manual-buttons button{
 border:1px solid #52677c;border-radius:8px;background:#172538;color:#fff;font-weight:800;cursor:pointer
}
.viewer-mode-buttons button{padding:6px 9px}
.viewer-mode-buttons button.active,.viewer-phase-buttons button.active,.viewer-library-open{background:#d7a83e!important;color:#171109!important;border-color:#d7a83e!important}
.viewer-detail-settings{width:100%;padding:8px;margin-top:8px}
.viewer-source-buttons{display:flex;gap:8px;align-items:center}
.viewer-source-buttons .viewer-library-open{flex:1;padding:10px}
.viewer-source-buttons .viewer-live-open{flex:0 0 32%;padding:10px;opacity:.42;cursor:not-allowed}
.viewer-source-buttons .viewer-help-open{flex:0 0 auto;width:auto;padding:10px 12px}
.viewer-match-title{font-weight:900;color:#f0d98c;font-size:16px}
.viewer-match-meta{margin-top:5px;color:#d5dde6;font-size:13px;line-height:1.5}
.viewer-match-result{margin-top:6px;color:#f2cf71;font-size:13px;font-weight:800}
.viewer-phase-buttons{display:grid;grid-template-columns:repeat(3,1fr);gap:7px}
.viewer-phase-buttons button{padding:10px 4px}
.viewer-auto-buttons{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.viewer-auto-buttons button{padding:11px}
.viewer-auto-buttons .viewer-stop-video{background:#4f251f}
.viewer-current-turn{padding:11px;border-radius:8px;background:#202f40;color:#f4ce6c;font-weight:900;text-align:center}
.viewer-current-move{min-height:34px;padding:8px;border-left:3px solid #e0b447;background:#142131;color:#e8eef5}
.viewer-manual-buttons{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.viewer-manual-buttons button{font-size:22px;padding:8px}
.viewer-settings-panel{position:absolute;z-index:5000;top:0;right:0;width:min(330px,100%);background:#101c29;border:1px solid #826a3d;border-radius:12px;padding:14px;box-shadow:0 18px 45px #000a}
.viewer-settings-panel[hidden]{display:none!important}
.viewer-settings-panel label{display:grid;grid-template-columns:1fr 140px;gap:10px;align-items:center;margin:9px 0}
.viewer-settings-panel select{padding:7px;border-radius:7px;background:#1a2a3c;color:#fff;border:1px solid #52677c}
.viewer-settings-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:14px}
.viewer-settings-actions button{padding:9px;border-radius:8px;border:1px solid #52677c;background:#172538;color:#fff;font-weight:800}
.viewer-settings-actions .viewer-settings-save{background:#d7a83e;color:#171109}
.viewer-help-modal{position:fixed;inset:0;z-index:15000;background:rgba(0,0,0,.72);display:flex;align-items:center;justify-content:center;padding:18px}
.viewer-help-modal[hidden]{display:none!important}
.viewer-help-card{width:min(520px,94vw);background:#101c29;color:#fff;border:1px solid #826a3d;border-radius:14px;padding:18px}
.viewer-help-close{display:block;margin-left:auto;padding:8px 14px;border-radius:8px;border:1px solid #52677c;background:#172538;color:#fff;font-weight:800}

/* hands use same light wood tone, Gote hand text remains upright */
#opponentHand .piece,#myHand .piece,#opponentHand .hand-piece,#myHand .hand-piece{
 background:linear-gradient(155deg,#f0d28f 0%,#dfb66b 62%,#c78d43 100%)!important;
 color:#111!important;border-color:#c79648!important;transform:none!important;filter:none!important;opacity:1!important
}
#opponentHand .piece *,#opponentHand .hand-piece *{transform:none!important}

/* every promoted-piece label is red */
html[data-viewer-mode="traditional"] #board .promoted,
html[data-viewer-mode="traditional"] #board .promoted .board-character-label{color:#b51f18!important}

/* edge-piece micro adjustment */
html[data-viewer-mode="traditional"] #board .square[data-file="9"] .board-character-piece{margin-left:4%!important;margin-right:-4%!important}
html[data-viewer-mode="traditional"] #board .square[data-rank="1"] .board-character-piece:not(.gote-char){transform:translateY(4%)!important}
html[data-viewer-mode="traditional"] #board .square[data-rank="1"] .board-character-piece.gote-char{transform:translateY(4%) rotate(180deg)!important}

/* Ver.0.19.1 — both captured-piece trays live below the board */
#myHand,#opponentHand{
  display:flex!important;
  align-items:center!important;
  gap:8px!important;
  flex-wrap:wrap!important;
  min-height:44px!important;
  padding:8px 10px!important;
  background:#101c29!important;
  border-top:1px solid #33465a!important;
}
#myHand .hand-piece,#opponentHand .hand-piece{
  background:linear-gradient(155deg,#f0d28f 0%,#dfb66b 62%,#c78d43 100%)!important;
  color:#111!important;
  transform:none!important;
  filter:none!important;
  opacity:1!important;
  border-color:#c79648!important;
  font-weight:800!important;
}
#myHand .hand-piece *,#opponentHand .hand-piece *{
  color:#111!important;
  transform:none!important;
}
#myHand .hand-count,#opponentHand .hand-count{color:#111!important}

.viewer-advanced-settings[hidden]{display:none!important}
.viewer-advanced-settings{display:block}
.viewer-advanced-settings label{display:grid!important}

.board-column{display:flex!important;flex-direction:column!important}
.board-frame{order:10!important}
#myHand{order:20!important}
#opponentHand{order:21!important}
#me{order:22!important}

#demoTurnSlot,.viewer-current-turn{display:none!important}
.viewer-manual-buttons-four{grid-template-columns:repeat(4,1fr)!important}

.viewer-manual-buttons-four button{font-size:17px!important;padding:8px 3px!important;min-width:0!important}
.viewer-advanced-settings[hidden]{display:none!important}

#opponent{display:none!important}
#demoMove.viewer-current-move{display:none!important}
.viewer-top-move{
  padding:10px 14px;
  background:#111d2a;
  color:#f0d98c;
  border-bottom:1px solid #33465a;
  font-weight:900;
  min-height:22px;
}
.viewer-phase-buttons .viewer-phase.active{
  background:#d7a83e!important;
  color:#171109!important;
  border-color:#d7a83e!important;
}

/* Ver.0.19.4 definitive fixes */
html[data-viewer-mode="traditional"] #board .board-character-piece.gote-char{
  transform:rotate(180deg)!important;
}
html[data-viewer-mode="traditional"] #board .board-character-piece.gote-char .board-character-label{
  transform:none!important;
}
html[data-viewer-mode="traditional"] #board .board-character-piece.promoted .board-character-label{
  color:#b51f18!important;
}
html[data-viewer-mode="traditional"] #board .piece.enemy{
  transform:rotate(180deg)!important;
}
html[data-viewer-mode="traditional"] #board .piece.promoted,
html[data-viewer-mode="traditional"] #board .piece.enemy.promoted{
  color:#b51f18!important;
}
#myHand .hand-piece,#opponentHand .hand-piece{
  color:#111!important;
  transform:none!important;
  text-shadow:none!important;
}
#myHand .hand-piece *,#opponentHand .hand-piece *{
  color:#111!important;
  transform:none!important;
}
#myHand .hand-piece::before,#myHand .hand-piece::after,
#opponentHand .hand-piece::before,#opponentHand .hand-piece::after{
  content:none!important;
  display:none!important;
}
html[data-viewer-mode="traditional"] #board .square[data-rank="1"] .board-character-piece.gote-char{
  transform:translateY(4%) rotate(180deg)!important;
}

/* Ver.0.19.5: explicit treatment for two-character promoted pieces */
html[data-viewer-mode="traditional"] #board .promoted-stack,
html[data-viewer-mode="traditional"] #board .promoted-stack span{
  color:#b51f18!important;
}
html[data-viewer-mode="traditional"] #board .gote-char.promoted .gote-promoted-stack{
  transform:rotate(180deg)!important;
  transform-origin:center center!important;
}
html[data-viewer-mode="traditional"] #board .sente-char.promoted .sente-promoted-stack{
  transform:none!important;
}

/* Ver.0.19.6: Gote two-character promoted text follows the already-rotated piece */
html[data-viewer-mode="traditional"] #board .gote-char.promoted .gote-promoted-stack,
html[data-viewer-mode="traditional"] #board .gote-char.promoted .gote-promoted-stack span{
  color:#b51f18!important;
}

/* Remove the unused empty player row below captured pieces */
#me{display:none!important}

/* Ver.0.19.7: two-character promoted Gote pieces rotate at glyph-stack level */
html[data-viewer-mode="traditional"] #board .promoted-stack{
  display:inline-flex!important;
  flex-direction:column!important;
  align-items:center!important;
  justify-content:center!important;
}
html[data-viewer-mode="traditional"] #board .gote-promoted-stack,
html[data-viewer-mode="traditional"] #board .gote-promoted-stack span{
  color:#b51f18!important;
}

.mobile-settings-open,.mobile-settings-close,.mobile-playback{display:none!important}

@media (max-width:700px){
  /* header */
  header,.app-header,.site-header{
    position:relative!important;
  }
  .brand{
    display:flex!important;
    align-items:baseline!important;
    gap:6px!important;
    max-width:calc(100% - 84px)!important;
  }
  .brand-title{font-size:clamp(22px,7vw,30px)!important}
  .brand-ver{
    display:inline!important;
    font-size:11px!important;
    color:#d9ad4c!important;
    font-weight:800!important;
  }
  .mobile-settings-open{
    display:block!important;
    position:absolute!important;
    right:12px!important;
    top:50%!important;
    transform:translateY(-50%)!important;
    z-index:20!important;
    border:1px solid #52677c!important;
    border-radius:8px!important;
    background:#172538!important;
    color:#fff!important;
    padding:7px 11px!important;
    font-weight:800!important;
  }

  /* One-column viewer */
  .viewer-layout,.app-main,.main-layout,.content-grid{
    display:block!important;
  }
  .board-column,.viewer-board-column{
    width:100%!important;
    max-width:none!important;
  }

  /* Playback directly below captured pieces */
  .mobile-playback{
    display:block!important;
    padding:10px 10px 2px!important;
    background:#101c29!important;
    border-top:1px solid #33465a!important;
  }
  .mobile-play-row{
    display:grid!important;
    grid-template-columns:repeat(6,1fr)!important;
    gap:5px!important;
  }
  .mobile-play-row button,
  .mobile-phase-row button{
    min-width:0!important;
    padding:8px 3px!important;
    border:1px solid #52677c!important;
    border-radius:7px!important;
    background:#172538!important;
    color:#fff!important;
    font-weight:800!important;
    font-size:13px!important;
  }
  .mobile-play-row .viewer-autoplay-toggle{background:#1f5c3d!important}
  .mobile-play-row .viewer-stop-video{background:#5b2822!important}
  .mobile-phase-row{
    display:grid!important;
    grid-template-columns:repeat(3,1fr)!important;
    gap:6px!important;
    margin-top:8px!important;
  }
  .mobile-phase-row .viewer-phase.active{
    background:#d7a83e!important;
    color:#171109!important;
    border-color:#d7a83e!important;
  }

  /* Right controller becomes settings drawer */
  .demo-controls,.viewer-controls,.right-panel,.viewer-side-panel{
    display:none!important;
  }
  html.mobile-settings-active .demo-controls,
  html.mobile-settings-active .viewer-controls,
  html.mobile-settings-active .right-panel,
  html.mobile-settings-active .viewer-side-panel{
    display:block!important;
  }

  /* Current app uses demo-controls as side panel */
  html.mobile-settings-active .demo-controls{
    position:fixed!important;
    inset:0!important;
    z-index:12000!important;
    overflow:auto!important;
    background:#09111b!important;
    padding:18px 14px 28px!important;
  }
  .mobile-settings-close{
    display:block!important;
    width:100%!important;
    margin:0 0 10px!important;
    border:1px solid #52677c!important;
    border-radius:8px!important;
    background:#172538!important;
    color:#fff!important;
    padding:9px!important;
    font-weight:800!important;
  }

  /* Hide normal right-panel playback/phase controls inside settings on mobile.
     Settings should contain mode, kifu/LIVE/HELP, match info and detail settings. */
  html.mobile-settings-active .viewer-phase-buttons,
  html.mobile-settings-active .viewer-auto-buttons,
  html.mobile-settings-active .viewer-manual{
    display:none!important;
  }

  /* Mobile settings content stretches full width */
  html.mobile-settings-active .viewer-main-controls{
    width:100%!important;
    max-width:680px!important;
    margin:0 auto!important;
  }

  /* Keep PC layout untouched by scoping every change to this media query */
}

/* Ver.0.19.9 mobile compact controls + captured-piece spacing */
@media (max-width:700px){
  /* Captured pieces and playback controls should touch visually with only a hairline gap. */
  #myHand.hand,#opponentHand.hand{
    margin:0!important;
    min-height:0!important;
    padding-top:5px!important;
    padding-bottom:5px!important;
  }
  #opponentHand.hand{margin-bottom:0!important;border-bottom:0!important}
  .mobile-playback{
    margin:0!important;
    padding:2px 2px 1px!important;
    border-radius:0!important;
    border-top:1px solid #33465a!important;
  }
  .mobile-play-row{gap:2px!important;margin:0!important;padding:0!important}
  .mobile-phase-row{gap:2px!important;margin:2px 0 0!important;padding:0!important}
  .mobile-play-row button,.mobile-phase-row button{
    margin:0!important;
    min-height:38px!important;
    padding:4px 1px!important;
    border-radius:5px!important;
  }
  /* No extra labels/rows below the three phase buttons. */
  .mobile-playback>*:not(.mobile-play-row):not(.mobile-phase-row){display:none!important}
}


/* ==========================================================
   Ver.0.19.10 FINAL MOBILE / TRADITIONAL OVERRIDES
   ========================================================== */

/* 1) All normal board pieces sit inside the center of their square.
      Remove old edge-only translations that pushed rank 1 pieces over lines. */
html[data-viewer-mode="traditional"] #board .board-character-piece{
  inset:7%!important;
  width:auto!important;
  height:auto!important;
  margin:0!important;
  align-items:center!important;
  justify-content:center!important;
}
html[data-viewer-mode="traditional"] #board .board-character-piece.sente-char{
  transform:none!important;
}
html[data-viewer-mode="traditional"] #board .board-character-piece.gote-char{
  transform:rotate(180deg)!important;
}
html[data-viewer-mode="traditional"] #board .square[data-rank="1"] .board-character-piece.sente-char,
html[data-viewer-mode="traditional"] #board .square[data-rank="9"] .board-character-piece.sente-char{
  transform:none!important;
}
html[data-viewer-mode="traditional"] #board .square[data-rank="1"] .board-character-piece.gote-char,
html[data-viewer-mode="traditional"] #board .square[data-rank="9"] .board-character-piece.gote-char{
  transform:rotate(180deg)!important;
}

/* 2) The historical bug:
      .gote-promoted-stack still had its own 180deg from Ver.0.19.5.
      The outer Gote piece is already rotated, so the nested rotation made
      成銀/成桂/成香 upright. Cancel ONLY that nested rotation here. */
html[data-viewer-mode="traditional"] #board .gote-char.promoted .gote-promoted-stack{
  transform:none!important;
  transform-origin:center center!important;
}
html[data-viewer-mode="traditional"] #board .promoted-stack,
html[data-viewer-mode="traditional"] #board .promoted-stack span{
  color:#b51f18!important;
}
/* Two-line promoted names must fit comfortably inside one square. */
html[data-viewer-mode="traditional"] #board .board-character-label .promoted-stack{
  font-size:.66em!important;
  line-height:.78!important;
  max-width:100%!important;
  max-height:100%!important;
}

/* 3) Captured pieces: compact text/rows. */
@media (max-width:700px){
  header .brand .brand-ver{
    display:inline!important;
    font-size:7px!important;
    line-height:1!important;
    letter-spacing:0!important;
    margin-left:1px!important;
  }

  #myHand.hand,#opponentHand.hand{
    min-height:0!important;
    margin:0!important;
    padding:3px 5px!important;
    gap:4px!important;
    font-size:80%!important;
    line-height:1.1!important;
  }
  #myHand .hand-piece,#opponentHand .hand-piece{
    padding:4px 7px!important;
    font-size:100%!important;
    min-height:30px!important;
  }

  /* DOM is already board -> Sente hand -> Gote hand -> mobile controls.
     Force the flex order so the controls cannot appear above the board. */
  .board-column{
    display:flex!important;
    flex-direction:column!important;
  }
  .viewer-top-move{order:1!important}
  .board-frame{order:10!important}
  #myHand{order:20!important}
  #opponentHand{order:21!important}
  .mobile-playback{order:22!important}
  #me{order:23!important}

  /* Controls touch the captured-piece rows; almost no panel padding. */
  #opponentHand.hand{
    border-bottom:0!important;
    padding-bottom:2px!important;
  }
  .mobile-playback{
    display:block!important;
    margin:0!important;
    padding:0 1px 1px!important;
    border:0!important;
    border-top:1px solid #33465a!important;
    border-radius:0!important;
    background:#101c29!important;
  }
  .mobile-play-row{
    display:grid!important;
    grid-template-columns:repeat(6,minmax(0,1fr))!important;
    gap:1px!important;
    margin:0!important;
    padding:1px 0 0!important;
  }
  .mobile-phase-row{
    display:grid!important;
    grid-template-columns:repeat(3,minmax(0,1fr))!important;
    gap:1px!important;
    margin:1px 0 0!important;
    padding:0!important;
  }
  .mobile-play-row button,.mobile-phase-row button{
    margin:0!important;
    min-width:0!important;
    min-height:34px!important;
    padding:2px 1px!important;
    border-radius:3px!important;
    font-size:12px!important;
    line-height:1.05!important;
  }
}

/* Ver.0.19.61: the light wood surface reaches the outer board grid.
   Historical inset rings made all four edge squares look smaller. */
html[data-viewer-mode="traditional"] #board,
html[data-viewer-mode="traditional"][data-viewer-board="wood"] #board{
  background-origin:border-box!important;
  background-clip:border-box!important;
  box-shadow:0 8px 22px rgba(0,0,0,.35)!important;
}

/* Ver.0.19.11: visible version sizing */
.brand .brand-ver{
  display:inline!important;
  margin-left:6px!important;
  font-size:10px!important;
  line-height:1!important;
  letter-spacing:0!important;
  font-weight:800!important;
  color:#d9ad4c!important;
  vertical-align:baseline!important;
}
@media (max-width:700px){
  .brand .brand-ver{
    font-size:5px!important;
    margin-left:2px!important;
  }
}


/* ============================================================
   Ver.0.19.12 — FINAL BOARD GEOMETRY FIX
   ============================================================ */

/* Piece box is deliberately smaller than a square.
   No rank/file-specific translation is allowed. */
html[data-viewer-mode="traditional"] #board .board-character-piece{
  position:absolute!important;
  left:50%!important;
  top:50%!important;
  right:auto!important;
  bottom:auto!important;
  width:78%!important;
  height:78%!important;
  inset:auto!important;
  margin:0!important;
  padding:0!important;
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  transform-origin:50% 50%!important;
  overflow:visible!important;
}
html[data-viewer-mode="traditional"] #board .board-character-piece.sente-char{
  transform:translate(-50%,-50%) rotate(0deg)!important;
}
html[data-viewer-mode="traditional"] #board .board-character-piece.gote-char{
  transform:translate(-50%,-50%) rotate(180deg)!important;
}

/* Cancel every old edge correction on rank 1/9 and file 1/9. */
html[data-viewer-mode="traditional"] #board .square[data-rank="1"] .board-character-piece.sente-char,
html[data-viewer-mode="traditional"] #board .square[data-rank="9"] .board-character-piece.sente-char,
html[data-viewer-mode="traditional"] #board .square[data-file="1"] .board-character-piece.sente-char,
html[data-viewer-mode="traditional"] #board .square[data-file="9"] .board-character-piece.sente-char{
  transform:translate(-50%,-50%) rotate(0deg)!important;
}
html[data-viewer-mode="traditional"] #board .square[data-rank="1"] .board-character-piece.gote-char,
html[data-viewer-mode="traditional"] #board .square[data-rank="9"] .board-character-piece.gote-char,
html[data-viewer-mode="traditional"] #board .square[data-file="1"] .board-character-piece.gote-char,
html[data-viewer-mode="traditional"] #board .square[data-file="9"] .board-character-piece.gote-char{
  transform:translate(-50%,-50%) rotate(180deg)!important;
}

/* CRITICAL: promoted Gote text must NOT rotate again inside the already
   rotated Gote piece. This is what kept 成銀 upright. */
html[data-viewer-mode="traditional"] #board .gote-char.promoted .gote-promoted-stack,
html[data-viewer-mode="traditional"] #board .gote-char .gote-promoted-stack,
html[data-viewer-mode="traditional"] #board .gote-char .promoted-stack{
  transform:rotate(0deg)!important;
  writing-mode:horizontal-tb!important;
  text-orientation:mixed!important;
}
html[data-viewer-mode="traditional"] #board .promoted-stack{
  display:flex!important;
  flex-direction:column!important;
  align-items:center!important;
  justify-content:center!important;
  width:100%!important;
  height:100%!important;
  font-size:.56em!important;
  line-height:.72!important;
  color:#b51f18!important;
}
html[data-viewer-mode="traditional"] #board .promoted-stack span{
  color:#b51f18!important;
  font-size:1em!important;
  line-height:.72!important;
}

/* Mobile: shrink all pieces further so rank 1/9 cannot touch the grid. */
@media (max-width:700px){
  html[data-viewer-mode="traditional"] #board .board-character-piece{
    width:72%!important;
    height:72%!important;
  }
  html[data-viewer-mode="traditional"] #board .promoted-stack{
    font-size:.50em!important;
    line-height:.68!important;
  }
}

/* ============================================================
   Ver.0.19.13 — MOBILE BOARD DEFINITIVE FIX
   Cache-busted asset build.
   ============================================================ */
html[data-viewer-mode="traditional"] #board .square{
  position:relative!important;
  overflow:hidden!important;
}
html[data-viewer-mode="traditional"] #board .board-character-piece{
  position:absolute!important;
  left:50%!important;
  top:50%!important;
  right:auto!important;
  bottom:auto!important;
  inset:auto!important;
  width:70%!important;
  height:76%!important;
  margin:0!important;
  padding:0!important;
  transform-origin:50% 50%!important;
  overflow:visible!important;
}
html[data-viewer-mode="traditional"] #board .board-character-piece.sente-char{
  transform:translate(-50%,-50%) rotate(0deg)!important;
}
html[data-viewer-mode="traditional"] #board .board-character-piece.gote-char{
  transform:translate(-50%,-50%) rotate(180deg)!important;
}
/* The whole Gote piece is already rotated. Never counter-rotate its label. */
html[data-viewer-mode="traditional"] #board .board-character-piece.gote-char .board-character-label,
html[data-viewer-mode="traditional"] #board .board-character-piece.gote-char .promoted-stack,
html[data-viewer-mode="traditional"] #board .board-character-piece.gote-char .promoted-stack span,
html[data-viewer-mode="traditional"] #board .board-character-piece.gote-char .gote-promoted-stack,
html[data-viewer-mode="traditional"] #board .board-character-piece.gote-char .gote-promoted-stack span{
  transform:none!important;
  transform-origin:50% 50%!important;
}
html[data-viewer-mode="traditional"] #board .board-character-piece.promoted .board-character-label,
html[data-viewer-mode="traditional"] #board .promoted-stack,
html[data-viewer-mode="traditional"] #board .promoted-stack span{
  color:#b51f18!important;
}
html[data-viewer-mode="traditional"] #board .promoted-stack{
  display:flex!important;
  flex-direction:column!important;
  align-items:center!important;
  justify-content:center!important;
  width:100%!important;
  height:100%!important;
  font-size:.50em!important;
  line-height:.68!important;
  letter-spacing:0!important;
}
/* No historical edge offsets are allowed. */
html[data-viewer-mode="traditional"] #board .square[data-rank] .board-character-piece.sente-char{
  transform:translate(-50%,-50%) rotate(0deg)!important;
}
html[data-viewer-mode="traditional"] #board .square[data-rank] .board-character-piece.gote-char{
  transform:translate(-50%,-50%) rotate(180deg)!important;
}
@media(max-width:700px){
  html[data-viewer-mode="traditional"] #board .board-character-piece{
    width:66%!important;
    height:72%!important;
  }
  html[data-viewer-mode="traditional"] #board .promoted-stack{
    font-size:.46em!important;
    line-height:.66!important;
  }
  header .brand .brand-ver{font-size:5px!important;margin-left:2px!important;}
}

/* Ver.0.19.13 readable version label */
.brand-ver{font-size:.48em!important;line-height:1!important;font-weight:700!important;margin-left:.35em!important;vertical-align:baseline!important;}
@media(max-width:600px){.brand-ver{font-size:.46em!important;}}


/* Ver.0.19.17: traditional piece presentation */
html[data-viewer-mode="traditional"] .square{overflow:hidden!important}
html[data-viewer-mode="traditional"] .board-character-piece{
 position:absolute!important;left:10%!important;right:10%!important;top:6%!important;bottom:6%!important;
 width:auto!important;height:auto!important;margin:0!important;border:0!important;border-radius:0!important;
 display:flex!important;align-items:center!important;justify-content:center!important;overflow:hidden!important;
 clip-path:polygon(50% 0%,92% 17%,87% 100%,13% 100%,8% 17%)!important;
 background:linear-gradient(145deg,#f8dda1 0%,#edc77e 42%,#dda85b 76%,#c58b3e 100%)!important;
 box-shadow:none!important;
 filter:drop-shadow(0 1px 0 rgba(255,245,214,.82)) drop-shadow(0 4px 2px rgba(57,28,5,.38)) drop-shadow(0 7px 5px rgba(25,12,2,.18))!important;
 transform:none!important
}
html[data-viewer-mode="traditional"] .board-character-piece::before{
 content:"";position:absolute;inset:3.5%;pointer-events:none;
 clip-path:polygon(50% 0%,92% 17%,87% 100%,13% 100%,8% 17%);
 border:1px solid rgba(86,45,10,.34);
 background:linear-gradient(145deg,rgba(255,255,255,.17),transparent 36%,rgba(82,41,8,.06))
}
html[data-viewer-mode="traditional"] .board-character-img{display:none!important}
html[data-viewer-mode="traditional"] .board-character-label{
 position:relative!important;inset:auto!important;transform:none!important;z-index:2!important;
 width:100%!important;height:100%!important;margin:0!important;padding:0 4%!important;border:0!important;
 border-radius:0!important;background:transparent!important;box-shadow:none!important;
 display:flex!important;align-items:center!important;justify-content:center!important;text-align:center!important;
 color:#17100a!important;font-family:"Yu Mincho","YuMincho","Hiragino Mincho ProN","MS PMincho",serif!important;
 font-weight:900!important;font-size:clamp(14px,2vw,28px)!important;line-height:.92!important;
 letter-spacing:-.06em!important;writing-mode:vertical-rl!important;text-orientation:upright!important;
 text-shadow:0 1px 0 rgba(255,246,218,.78)!important
}
html[data-viewer-mode="traditional"] .board-character-piece.gote-char{
 transform:rotate(180deg)!important;
 clip-path:polygon(50% 0%,92% 17%,87% 100%,13% 100%,8% 17%)!important
}
html[data-viewer-mode="traditional"] .board-character-piece.promoted .board-character-label,
html[data-viewer-mode="traditional"] .board-character-piece .promoted-stack{color:#b51f18!important}


/* Ver.0.19.17 v4 — traditional board piece geometry final override */
html[data-viewer-mode="traditional"] .square,
html[data-viewer-mode="traditional"] .board-square,
html[data-viewer-mode="traditional"] [class*="square"]{
  overflow:hidden!important;
}
html[data-viewer-mode="traditional"] .board-character-piece{
  box-sizing:border-box!important;
  position:absolute!important;
  left:50%!important;
  top:50%!important;
  right:auto!important;
  bottom:auto!important;
  width:76%!important;
  height:84%!important;
  min-width:0!important;
  min-height:0!important;
  max-width:76%!important;
  max-height:84%!important;
  margin:0!important;
  padding:0!important;
  transform:translate(-50%,-50%)!important;
  transform-origin:center center!important;
  overflow:hidden!important;
  clip-path:polygon(50% 0%,91% 17%,86% 100%,14% 100%,9% 17%)!important;
  border:0!important;
  border-radius:0!important;
  background:linear-gradient(145deg,#f7d998 0%,#ecc477 48%,#dba657 78%,#c58a3d 100%)!important;
  box-shadow:none!important;
  filter:drop-shadow(0 2px 1px rgba(255,245,215,.55))
         drop-shadow(0 3px 2px rgba(56,27,4,.40))!important;
}
html[data-viewer-mode="traditional"] .board-character-piece.gote-char{
  transform:translate(-50%,-50%) rotate(180deg)!important;
}
html[data-viewer-mode="traditional"] .board-character-piece::before{
  content:""!important;
  position:absolute!important;
  inset:3%!important;
  box-sizing:border-box!important;
  pointer-events:none!important;
  clip-path:polygon(50% 0%,91% 17%,86% 100%,14% 100%,9% 17%)!important;
  background:linear-gradient(145deg,rgba(255,255,255,.18),transparent 38%,rgba(73,34,4,.07))!important;
}
html[data-viewer-mode="traditional"] .board-character-img{
  display:none!important;
}
html[data-viewer-mode="traditional"] .board-character-label{
  box-sizing:border-box!important;
  position:absolute!important;
  inset:0!important;
  width:100%!important;
  height:100%!important;
  margin:0!important;
  padding:11% 8% 7%!important;
  border:0!important;
  border-radius:0!important;
  background:transparent!important;
  box-shadow:none!important;
  transform:none!important;
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  overflow:hidden!important;
  white-space:normal!important;
  writing-mode:vertical-rl!important;
  text-orientation:upright!important;
  color:#17100a!important;
  font-family:"Yu Mincho","YuMincho","Hiragino Mincho ProN","MS PMincho",serif!important;
  font-size:clamp(11px,1.55vw,23px)!important;
  font-weight:900!important;
  line-height:.92!important;
  letter-spacing:-.12em!important;
  text-align:center!important;
  text-shadow:0 1px 0 rgba(255,246,218,.78)!important;
}
html[data-viewer-mode="traditional"] .board-character-piece.promoted .board-character-label,
html[data-viewer-mode="traditional"] .board-character-piece .promoted-stack{
  color:#b51f18!important;
}

/* Ver.0.19.18 — definitive traditional koma layout: centered, contained, readable */
html[data-viewer-mode="traditional"] #board .square{
  position:relative!important;
  display:grid!important;
  place-items:center!important;
  overflow:hidden!important;
}
html[data-viewer-mode="traditional"] #board .square > .piece.board-character-piece{
  position:relative!important;
  inset:auto!important;
  left:auto!important;top:auto!important;right:auto!important;bottom:auto!important;
  width:74%!important;height:82%!important;
  min-width:0!important;min-height:0!important;max-width:74%!important;max-height:82%!important;
  margin:0!important;padding:0!important;
  transform:none!important;transform-origin:50% 50%!important;
  display:grid!important;place-items:center!important;
  overflow:hidden!important;
  clip-path:polygon(50% 0%,91% 17%,86% 100%,14% 100%,9% 17%)!important;
  background:linear-gradient(145deg,#f8dda1 0%,#edc77e 43%,#dda85b 77%,#c58b3e 100%)!important;
  border:0!important;border-radius:0!important;
  filter:drop-shadow(0 2px 1px rgba(255,245,214,.55)) drop-shadow(0 3px 2px rgba(57,28,5,.38))!important;
}
html[data-viewer-mode="traditional"] #board .square > .piece.board-character-piece.gote-char{
  transform:rotate(180deg)!important;
}
html[data-viewer-mode="traditional"] #board .square > .piece.board-character-piece .board-character-label{
  position:absolute!important;inset:0!important;
  width:100%!important;height:100%!important;
  margin:0!important;padding:10% 9% 7%!important;
  display:flex!important;align-items:center!important;justify-content:center!important;
  overflow:hidden!important;
  background:transparent!important;border:0!important;box-shadow:none!important;
  transform:none!important;
  color:#17100a!important;
  font-family:"Yu Mincho","YuMincho","Hiragino Mincho ProN","MS PMincho",serif!important;
  font-size:clamp(15px,1.72vw,25px)!important;font-weight:900!important;
  line-height:.92!important;letter-spacing:-.08em!important;
  writing-mode:vertical-rl!important;text-orientation:upright!important;text-align:center!important;
  white-space:normal!important;
  text-shadow:0 1px 0 rgba(255,246,218,.78)!important;
}
html[data-viewer-mode="traditional"] #board .square > .piece.board-character-piece.promoted .board-character-label,
html[data-viewer-mode="traditional"] #board .square > .piece.board-character-piece .promoted-stack,
html[data-viewer-mode="traditional"] #board .square > .piece.board-character-piece .promoted-stack span{
  color:#b51f18!important;
}
/* Cancel all historical edge nudges; every square uses the same geometry. */
html[data-viewer-mode="traditional"] #board .square[data-file] > .piece.board-character-piece,
html[data-viewer-mode="traditional"] #board .square[data-rank] > .piece.board-character-piece{
  margin:0!important;
}
html[data-viewer-mode="traditional"] #board .square[data-file] > .piece.board-character-piece.sente-char,
html[data-viewer-mode="traditional"] #board .square[data-rank] > .piece.board-character-piece.sente-char{
  transform:none!important;
}
html[data-viewer-mode="traditional"] #board .square[data-file] > .piece.board-character-piece.gote-char,
html[data-viewer-mode="traditional"] #board .square[data-rank] > .piece.board-character-piece.gote-char{
  transform:rotate(180deg)!important;
}

/* Ver.0.19.19 — GOTE promoted L/N/S: rotate once with the whole piece.
   The parent .gote-char already rotates 180deg; cancel the historical
   inner promoted-stack rotation that caused the red kanji to rotate back. */
html[data-viewer-mode="traditional"] #board .square > .piece.board-character-piece.gote-char .promoted-stack.gote-promoted-stack{
  transform:none!important;
  transform-origin:center center!important;
  color:#b51f18!important;
}

/* Ver.0.19.33: audience participation panel is visible below board on mobile */
@media(max-width:600px){
  .board-column>.viewer-prediction-card.viewer-prediction-mobile{
    display:block!important;
    margin:14px 0 0!important;
    padding:14px!important;
    border:1px solid #52677c!important;
    border-radius:12px!important;
    background:#0d1a28!important;
    min-height:0!important;
  }
  .board-column>.viewer-prediction-card .viewer-prediction-actions{
    display:grid!important;
    grid-template-columns:1fr 1fr!important;
    gap:8px!important;
    margin-top:10px!important;
  }
  .board-column>.viewer-prediction-card button{
    min-height:42px!important;
    white-space:normal!important;
  }
  .board-column>.viewer-prediction-card #viewerPredictionCandidates,
  .board-column>.viewer-prediction-card #viewerPredictionResult{
    margin-top:9px!important;
  }
}

/* Ver.0.19.34 event/tournament */
#viewerEventButton{display:block;margin:10px auto;min-height:40px;padding:8px 18px;border:1px solid #61758a;border-radius:9px;background:#122234;color:#fff}
#viewerEventPanel{display:none;position:fixed;inset:0;z-index:10000;background:#07111df2;color:#fff;padding:18px;overflow:auto}
#viewerEventPanel.open{display:block}
.viewer-event-head{max-width:720px;margin:0 auto 12px;display:flex;justify-content:space-between;align-items:center;gap:10px;font-size:18px}
.viewer-event-head button{padding:8px 12px}
#viewerEventList{max-width:720px;margin:auto;display:grid;gap:9px}
.viewer-game-row{width:100%;display:flex;justify-content:space-between;align-items:center;text-align:left;padding:14px;border:1px solid #53677b;border-radius:10px;background:#102033;color:#fff;font-size:16px}

/* ============================================================
   Ver.0.19.20 — Traditional board piece geometry consolidation
   One authoritative rule set for all ordinary shogi pieces.
   This block intentionally overrides historical label nudges.
   ============================================================ */
html[data-viewer-mode="traditional"] #board .square > .piece.board-character-piece{
  position:relative!important;
  inset:auto!important;
  width:78%!important;
  height:86%!important;
  margin:0!important;
  padding:0!important;
  display:grid!important;
  place-items:center!important;
  overflow:hidden!important;
  box-sizing:border-box!important;
  transform:none!important;
  transform-origin:50% 50%!important;
}
html[data-viewer-mode="traditional"] #board .square > .piece.board-character-piece.sente-char{
  transform:none!important;
}
html[data-viewer-mode="traditional"] #board .square > .piece.board-character-piece.gote-char{
  transform:rotate(180deg)!important;
}
html[data-viewer-mode="traditional"] #board .square > .piece.board-character-piece .board-character-label,
html[data-viewer-mode="traditional"] #board .square[data-file] > .piece.board-character-piece .board-character-label,
html[data-viewer-mode="traditional"] #board .square[data-rank] > .piece.board-character-piece .board-character-label{
  position:absolute!important;
  inset:0!important;
  left:0!important;
  right:0!important;
  top:0!important;
  bottom:0!important;
  width:100%!important;
  height:100%!important;
  min-width:0!important;
  margin:0!important;
  padding:8% 7% 6%!important;
  box-sizing:border-box!important;
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  overflow:hidden!important;
  background:transparent!important;
  border:0!important;
  border-radius:0!important;
  box-shadow:none!important;
  transform:none!important;
  color:#17100a!important;
  font-family:"Yu Mincho","YuMincho","Hiragino Mincho ProN","MS PMincho",serif!important;
  font-size:clamp(15px,1.72vw,25px)!important;
  font-weight:900!important;
  line-height:1!important;
  letter-spacing:0!important;
  writing-mode:vertical-rl!important;
  text-orientation:upright!important;
  text-align:center!important;
  white-space:normal!important;
  text-shadow:0 1px 0 rgba(255,246,218,.78)!important;
}
/* The parent gote piece already rotates 180deg. Never rotate its glyph again. */
html[data-viewer-mode="traditional"] #board .square > .piece.board-character-piece.gote-char .board-character-label{
  transform:none!important;
}
/* Promoted labels share exactly the same geometry; only their color changes. */
html[data-viewer-mode="traditional"] #board .square > .piece.board-character-piece.promoted .board-character-label,
html[data-viewer-mode="traditional"] #board .square > .piece.board-character-piece .promoted-stack,
html[data-viewer-mode="traditional"] #board .square > .piece.board-character-piece .promoted-stack span{
  color:#b51f18!important;
  writing-mode:vertical-rl!important;
  text-orientation:upright!important;
  transform:none!important;
}
/* Mobile: keep the same vertical glyph system instead of switching the pawn
   or any other piece to horizontal text. */
@media(max-width:600px){
  html[data-viewer-mode="traditional"] #board .square > .piece.board-character-piece{
    width:80%!important;
    height:87%!important;
  }
  html[data-viewer-mode="traditional"] #board .square > .piece.board-character-piece .board-character-label{
    font-size:clamp(13px,4.15vw,20px)!important;
    line-height:.96!important;
    letter-spacing:0!important;
    writing-mode:vertical-rl!important;
    text-orientation:upright!important;
  }
}
