.photo-layout{display:grid;grid-template-columns:minmax(180px,2fr) minmax(160px,1fr);gap:24px;align-items:start}.full-photo{margin:0;background:#11151d;border:1px solid #3c4352;border-radius:12px;overflow:hidden}.full-photo img{display:block;max-height:580px;width:100%;object-fit:contain}.full-photo figcaption{padding:10px;text-align:center;color:#abb5c8}.crop-frame{display:inline-block;overflow:hidden;flex-shrink:0;position:relative;padding:0}.crop-frame img{width:100%;height:100%;object-fit:cover;display:block}.crop-frame.large{width:150px;height:150px}.npc-ally{border-left:5px solid #65cfad!important}.npc-enemy{border-left:5px solid #ed8794!important}.npc-neutral{border-left:5px solid #c3b582!important}.npc-badge{margin-top:12px}.attribute small{display:block}.photo-label input{display:none}.full-photo+div .button{margin:4px 4px 4px 0}.portrait{vertical-align:middle}#crop-preview{text-align:center;padding:12px}.notice a{margin-top:8px}@media(max-width:600px){.photo-layout{grid-template-columns:1fr}.full-photo img{max-height:480px}}
.player-card{height:400px;display:flex;flex-direction:column;justify-content:flex-start;align-items:stretch;margin-bottom:0;min-width:0;gap:10px;overflow:hidden}
.player-card>.row{flex-wrap:nowrap;min-height:28px}.player-card>.row small{text-align:right}
.player-card .card-identity{display:grid;grid-template-columns:60px minmax(0,1fr);align-items:center;gap:12px;min-height:88px;margin:0}
.player-card .card-identity .portrait{width:60px;height:60px}.player-card .card-identity>div{min-width:0}
.player-card .card-name{font-size:1.3rem;line-height:1.3;margin:0 0 6px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.player-card .card-identity small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.player-card .bar{flex-shrink:0;margin:4px 0}.player-card p{margin:0}
.player-card .card-conditions{height:44px;flex-shrink:0;overflow:auto;overflow-wrap:anywhere}
.player-card .npc-badge{align-self:flex-start;margin:0}.player-card>.npc-badge+p{max-height:44px;overflow:auto}
.combat-layout{grid-template-columns:minmax(260px,.85fr) minmax(0,1.5fr);gap:16px}
.combat-layout>div{min-width:0}.combat-toolbar{display:flex;justify-content:space-between;gap:12px;align-items:center;flex-wrap:wrap;margin:12px 0 18px}
.combat-order>.panel{margin-bottom:16px}.combat-order .turn-order{max-height:320px;max-height:min(40vh,320px);overflow-y:auto;overscroll-behavior:contain;scrollbar-gutter:stable;padding-right:8px}
.combat-order .turn-order li{min-width:0;gap:8px}.combat-order .turn-order li strong{overflow-wrap:anywhere}
.combat-order .panel>.row.between{display:block}.combat-order .panel>.row.between p{margin-bottom:10px}
.turn-edit-actions{gap:8px}.turn-edit-actions button{font-size:.85rem;padding:9px 12px}
.combat-actions>.panel{margin-bottom:14px}.battle-resources{margin-bottom:14px}.battle-resource{padding:12px}
.session-quick .live-columns{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
.session-quick .resource-stack{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,175px),1fr));gap:10px}
.session-quick .resource-control{display:flex;flex-direction:column;align-items:stretch;gap:8px;padding:12px;border:1px solid var(--line);border-radius:8px}
.session-quick .resource-buttons{display:flex;gap:6px}.session-quick .resource-buttons input{width:58px;min-width:0}.session-quick .resource-buttons button{padding:8px 12px}
.session-quick .resource-control>span{display:flex;justify-content:space-between;gap:8px;flex-wrap:wrap}
#live-body .inbox-grid{gap:12px}#live-body details>summary{cursor:pointer}#live-body .wound-summary{gap:8px}
.actor-controls{display:flex;align-items:end;gap:16px;flex-wrap:wrap;margin-bottom:18px}.actor-controls>.row{margin:0}.actor-controls .actor-picker{margin:0;flex:1;min-width:220px;max-width:460px}
@media(max-width:850px){.combat-layout,.session-quick .live-columns{grid-template-columns:1fr}.combat-order .turn-order{max-height:260px}.actor-controls{align-items:stretch}.actor-controls .actor-picker{max-width:none}}
@media(max-width:480px){.session-quick .resource-stack{grid-template-columns:1fr}.player-card{padding:18px}}
.site-version{padding:12px 16px calc(12px + env(safe-area-inset-bottom));text-align:center;font-size:.8rem;color:var(--muted);line-height:1.5}
.login-wrap{min-height:calc(100vh - 48px);min-height:calc(100svh - 48px)}
.mobile-menu-toggle{display:none}
/* Touch layouts: the map and tab strips scroll inside their own containers. */
@media(max-width:900px){
 .shell{display:block;min-height:calc(100svh - 48px)}
 .sidebar{position:relative;height:auto;padding:16px;gap:12px;border-right:0;border-bottom:1px solid var(--line);overflow:visible}
 .sidebar>div:first-child>.brand{padding-right:74px;font-size:1.35rem}
 .sidebar>div:first-child>p{margin:8px 0;overflow-wrap:anywhere}
 .sidebar .account{position:absolute;top:12px;right:16px;display:block;margin:0}.sidebar .account .identity{display:none}.sidebar .account button{min-height:44px}
 .sidebar .campaign-switch{margin:8px 0 0;max-width:none}.sidebar .campaign-switch select{font-size:16px;padding:10px}
 .mobile-menu-toggle{display:flex;justify-content:space-between;width:100%;text-align:left;color:var(--gold)}.mobile-menu-toggle span{font-size:.85rem;color:var(--muted);overflow-wrap:anywhere}
 .sidebar nav{display:none}.sidebar.menu-open nav{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;max-height:55svh;overflow-y:auto;padding:3px}
 .sidebar nav button{white-space:normal;min-width:0;min-height:48px;text-align:left;padding:10px}
 .content{padding:18px 14px 32px;min-width:0}.topbar{gap:10px;align-items:flex-start;margin-bottom:18px}.topbar>*{min-width:0;overflow-wrap:anywhere}
 .page-head{flex-wrap:wrap;gap:12px;align-items:flex-start}.page-head>.row{width:100%}.page-head>.row button{flex:1}
 .panel,.stat,.item,.grid>*,.live-columns>*,.combat-layout>*,.ability-grid>*,.inbox-grid>*{min-width:0}
 .panel{padding:16px}h1{font-size:1.7rem}h1,h2,h3,.panel-title,summary{overflow-wrap:anywhere}
 .grid.three,.grid.four{grid-template-columns:repeat(2,minmax(0,1fr))}
 .combat-layout,.session-quick .live-columns{grid-template-columns:minmax(0,1fr)}
 .inbox-grid,.ability-grid{grid-template-columns:minmax(0,1fr)}
 .battle-resources{grid-template-columns:repeat(2,minmax(0,1fr))}.battle-resource strong{font-size:1.7rem}
 .actor-controls{align-items:stretch;gap:10px}.actor-controls>.row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));width:100%}.actor-controls .actor-picker{min-width:0;max-width:none;width:100%;flex-basis:100%}
 .combat-toolbar{align-items:stretch}.combat-toolbar>.row{flex:1}.combat-toolbar button{white-space:normal}
 .turn-edit-actions button{min-height:44px}.combat-order .turn-order{max-height:260px}.turn-order li>div{min-width:0}.turn-order li:before{flex-shrink:0}
 .tabs,.wizard-progress{max-width:100%;overscroll-behavior-x:contain}.tabs button,.wizard-progress button{flex-shrink:0;min-height:46px}
 input,select,textarea{font-size:16px;min-width:0;max-width:100%}button,.button{touch-action:manipulation;overflow-wrap:anywhere}
 input[type=checkbox]{flex-shrink:0}.check{min-height:44px}
 dialog{width:calc(100% - 20px);max-width:580px;max-height:calc(100dvh - 24px);padding:18px;overscroll-behavior:contain}dialog .grid{grid-template-columns:1fr}
 .quick-body{position:fixed;top:auto;bottom:max(16px,env(safe-area-inset-bottom));left:16px;right:16px;width:auto;max-height:65dvh;overflow:auto;z-index:30}
 .quick-controls{z-index:25}.quick>button{min-height:44px}.help>button{width:44px;min-height:44px}.help-text{position:fixed;top:auto;bottom:20px;left:16px!important;right:16px!important;width:auto;max-width:none;max-height:55dvh;overflow:auto}
 .evolution-summary{grid-template-columns:1fr;gap:12px}.evolution-actions{grid-template-columns:repeat(2,minmax(0,1fr))}.xp-row{grid-template-columns:40px minmax(0,1fr) 76px;gap:8px}.xp-row .portrait{width:40px;height:40px}
 .map-viewport{height:60svh;min-height:280px;max-height:500px;touch-action:pan-x pan-y}.node-grip{min-height:44px;align-items:center}.node-branch{min-height:44px}
 .full-photo img{max-height:55svh}.photo-layout{grid-template-columns:1fr}.full-photo+div{min-width:0}
 .login-wrap{padding:24px 16px}.login{min-width:0;max-width:480px}.login .panel{padding:20px}.entry-top{flex-wrap:wrap;align-items:center}.entry-top .brand{margin-bottom:0}.entry-top{margin-bottom:28px}.entry-top button{min-height:44px}
}
@media(max-width:600px){
 .grid.two,.grid.three,.grid.four,.review-grid,.scene-list,.session-cards{grid-template-columns:minmax(0,1fr)}.span2{grid-column:auto}
 .attrs{grid-template-columns:repeat(2,minmax(0,1fr))}.stats{grid-template-columns:repeat(2,minmax(0,1fr))}.stat{padding:12px}.stat strong{font-size:1.5rem}
 .player-card{height:400px;padding:18px}.player-card .card-identity{grid-template-columns:60px minmax(0,1fr)}
 .session-quick .resource-stack{grid-template-columns:minmax(0,1fr)}.session-quick .resource-control{flex-direction:row;align-items:center;flex-wrap:wrap}.session-quick .resource-control>span{flex:1;min-width:80px}
 .session-quick .resource-buttons button{min-width:44px;min-height:44px}.session-quick .resource-buttons input{width:60px}
 .search-row,.inspiration-options{grid-template-columns:minmax(0,1fr)}.search-row>*{min-width:0}
 .wizard-footer>.row{display:flex;flex-wrap:wrap}.wizard-footer button{min-width:0;white-space:normal}.wizard-panel{padding:16px}
 .guide-card{padding:18px}.guide-heading{font-size:1.65rem}.beginner-card{padding:18px}.beginner-card .row button{width:100%}
 .cost-row{grid-template-columns:minmax(0,1fr) 65px 44px}.cost-row button{padding:4px}
 .resource-control strong{font-size:1.3rem}.save-indicator{max-width:45%;font-size:.8rem}.topbar .eyebrow{font-size:.65rem}
 .combat-toolbar>.row{width:100%;flex-basis:100%}.combat-toolbar>.row button{flex:1}.actor-controls>.row button{padding:10px 8px}
 #toast{bottom:max(16px,env(safe-area-inset-bottom));max-width:calc(100vw - 24px)}
}
.card-identity{display:flex;align-items:center;gap:12px;min-width:0}.card-identity>div{min-width:0}.card-identity h1{overflow-wrap:anywhere}
.portrait-settings{border:1px solid var(--line);border-radius:10px;padding:12px;margin:12px 0}
.portrait-settings>summary{display:flex;align-items:center;gap:12px;cursor:pointer;min-height:60px;list-style:none}.portrait-settings>summary small{display:block;margin-top:5px}.portrait-settings>summary:after{content:'＋';color:var(--gold);margin-left:auto}.portrait-settings[open]>summary:after{content:'−'}.portrait-settings[open]>.photo-layout{margin-top:20px}
.portrait-settings>summary .portrait{width:48px;height:48px;flex-shrink:0}
.battle-resources{grid-template-columns:repeat(2,minmax(0,1fr))}
.quick-facts{margin:0 0 18px}.quick-facts>div{display:flex;justify-content:space-between;gap:12px;padding:10px 0;border-bottom:1px solid var(--line)}.quick-facts dt{color:var(--muted)}.quick-facts dd{margin:0;text-align:right}.quick-facts small{display:inline-block}
.participant-options{max-height:50dvh;overflow:auto;overscroll-behavior:contain}.participant-options .check{padding:12px 0;border-bottom:1px solid var(--line)}.participant-options small{display:block}
.account>[data-action="change-password"]{width:100%;font-size:.85rem}
@media(max-width:900px){
 .sidebar>div:first-child>.brand{padding-right:125px;min-height:88px}
 .sidebar .account{display:flex;flex-direction:column;gap:4px;max-width:126px;align-items:stretch}
 .sidebar .account button{font-size:.8rem;padding:8px;min-height:44px}
 .portrait-settings .photo-layout{grid-template-columns:minmax(0,1fr)}
 .quick-facts>div{flex-wrap:wrap}.quick-facts dt,.quick-facts dd{overflow-wrap:anywhere}
 .participant-options .check span{min-width:0;overflow-wrap:anywhere}
}
