*{box-sizing:border-box}body{margin:0;background:var(--color-canvas);color:var(--color-ink);font:var(--font-body)/var(--line-body) var(--font-ui)}button,input,select,textarea{font:inherit;color:inherit}input,select,textarea{font-size:var(--font-body)}button,a,input,select,textarea{-webkit-tap-highlight-color:transparent}button,a{touch-action:manipulation}button{cursor:pointer;min-height:var(--control-height);padding:var(--space-sm) var(--space-md);background:var(--color-paper);border:var(--line-thin) solid var(--color-border);border-radius:var(--radius-md);font-weight:var(--weight-medium)}button:hover{border-color:var(--color-primary);color:var(--color-primary)}button.primary{background:var(--color-primary);border-color:var(--color-primary);color:var(--color-paper)}button.primary:hover{background:var(--color-primary-hover)}button:disabled{opacity:.5;cursor:default}button.danger{color:var(--color-error)}a{color:var(--color-primary);text-decoration:none}a:hover{text-decoration:underline}:focus-visible{outline:var(--focus-ring) solid var(--color-primary);outline-offset:var(--space-xs)}input,select,textarea{border:var(--line-thin) solid var(--color-border);background:var(--color-paper);border-radius:var(--radius-sm);padding:var(--space-sm);min-height:var(--control-height);max-width:100%;width:100%}textarea{resize:vertical;min-height:160px;line-height:var(--line-body)}label{display:block;font-size:var(--font-small);font-weight:var(--weight-medium);margin-bottom:var(--space-sm)}label input,label select,label textarea{margin-top:var(--space-xs)}h1,h2,h3,p{margin:0}h1{font-size:var(--font-title);line-height:1.3}h2{font-size:var(--font-section);line-height:1.4}h3{font-size:var(--font-body)}small,.muted{font-size:var(--font-small);color:var(--color-muted)}p+p{margin-top:var(--space-sm)}.site-header{background:var(--color-paper);border-bottom:var(--line-thin) solid var(--color-border)}.header-inner{max-width:var(--page-width);margin:auto;padding:var(--space-md) var(--space-lg);display:flex;justify-content:space-between;align-items:center;gap:var(--space-md)}.brand{display:flex;gap:var(--space-sm);align-items:center}.brand-mark{display:grid;place-items:center;background:var(--color-primary);color:var(--color-paper);border-radius:var(--radius-md);width:var(--control-height);height:var(--control-height);font-weight:var(--weight-strong)}.brand small{display:block}.save-state{max-width:180px;font-size:var(--font-small);color:var(--color-muted);text-align:right}main{max-width:var(--page-width);margin:auto;padding:var(--space-lg);padding-bottom:var(--space-xl)}.page-heading{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--space-md);margin-bottom:var(--space-lg)}.page-heading p{margin-top:var(--space-sm)}.eyebrow{display:block;color:var(--color-primary);font-size:var(--font-small);font-weight:var(--weight-strong);margin-bottom:var(--space-sm)}.back{display:inline-flex;align-items:center;min-height:var(--control-height);margin-bottom:var(--space-sm)}.layout{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(280px,1fr);gap:var(--space-lg);align-items:start}.panel{background:var(--color-paper);border:var(--line-thin) solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-lg);margin-bottom:var(--space-lg);min-width:0}.panel h2{margin-bottom:var(--space-md)}.panel>p,.panel>small{margin-bottom:var(--space-md)}.stack{display:flex;flex-direction:column;gap:var(--space-md)}.row{display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-sm)}.row>*{min-width:0}.row .grow{flex:1}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-md)}.tabs{display:flex;gap:var(--space-sm);flex-wrap:wrap;margin-bottom:var(--space-lg)}.tabs a,.tabs button{display:inline-flex;align-items:center;justify-content:center;min-height:var(--control-height);padding:var(--space-sm) var(--space-md);border-radius:var(--radius-md);border:var(--line-thin) solid transparent;background:transparent;color:var(--color-muted)}.tabs [aria-current=page],.tabs [aria-pressed=true]{background:var(--color-primary-soft);color:var(--color-primary);border-color:var(--color-border)}.notice{padding:var(--space-md);border-radius:var(--radius-md);margin-bottom:var(--space-lg);background:var(--color-primary-soft);overflow-wrap:anywhere}.notice.error{background:var(--color-error-soft);color:var(--color-error)}.notice.warning{background:var(--color-warning-soft);color:var(--color-warning)}.notice.success{background:var(--color-success-soft);color:var(--color-success)}#notice:empty{display:none}.game-list{padding:0;list-style:none;margin:0}.game-item{border-bottom:var(--line-thin) solid var(--color-border);padding:var(--space-md) 0}.game-item:first-child{padding-top:0}.game-item:last-child{border-bottom:0;padding-bottom:0}.game-link{display:block;min-height:var(--control-height);color:var(--color-ink)}.game-link:hover{text-decoration:none;color:var(--color-primary)}.game-code{font-size:var(--font-code);color:var(--color-primary);font-variant-numeric:tabular-nums}.game-name{display:block;font-size:var(--font-item);font-weight:var(--weight-strong);overflow-wrap:anywhere}.game-meta{margin-top:var(--space-xs);font-size:var(--font-small);color:var(--color-muted)}.game-tools{margin-top:var(--space-sm)}.quiet{background:transparent}.pill{display:inline-block;padding:var(--space-xs) var(--space-sm);border-radius:var(--radius-sm);background:var(--color-primary-soft);color:var(--color-primary);font-size:var(--font-small)}.pill.warning{background:var(--color-warning-soft);color:var(--color-warning)}.pill.success{background:var(--color-success-soft);color:var(--color-success)}.player-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(94px,1fr));gap:var(--space-sm)}.player-grid button{text-align:left;padding:var(--space-sm);min-height:64px;overflow-wrap:anywhere}.player-grid button[aria-pressed=true]{border-color:var(--color-primary);background:var(--color-primary-soft);color:var(--color-primary)}.player-grid small{display:block;font-size:var(--font-caption);font-weight:var(--weight-normal)}.choice-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-sm);margin:var(--space-md) 0}.choice-grid button{font-size:var(--font-small)}.choice-grid [aria-pressed=true]{color:var(--color-primary);border-color:var(--color-primary);background:var(--color-primary-soft)}.mini-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-sm)}.check{display:flex;gap:var(--space-sm);align-items:flex-start;min-height:var(--control-height);font-size:var(--font-body);font-weight:var(--weight-normal)}.check input{width:22px;height:22px;min-height:22px;flex:none;margin-top:2px;accent-color:var(--color-primary)}.checklist{list-style:none;padding:0;margin:0}.checklist li{padding:var(--space-sm) 0;border-bottom:var(--line-thin) solid var(--color-border);overflow-wrap:anywhere}.checklist li:last-child{border-bottom:0}.result-row{display:flex;justify-content:space-between;gap:var(--space-md);padding:var(--space-sm) 0;border-bottom:var(--line-thin) solid var(--color-border)}.result-row span:last-child{font-variant-numeric:tabular-nums;text-align:right}.text-output{white-space:pre-wrap;overflow-wrap:anywhere;font:var(--font-small)/var(--line-body) var(--font-ui);background:var(--color-canvas);border-radius:var(--radius-sm);padding:var(--space-md);margin:var(--space-md) 0}.output-area{min-height:200px}.details{margin-top:var(--space-md)}summary{cursor:pointer;min-height:var(--control-height);display:list-item;padding:var(--space-sm) 0;color:var(--color-primary)}.field-note{display:block;margin-top:var(--space-xs);font-size:var(--font-small);color:var(--color-muted)}.divider{border:0;border-top:var(--line-thin) solid var(--color-border);margin:var(--space-lg) 0}.empty{padding:var(--space-lg) 0;color:var(--color-muted)}.file-label{display:block;border:var(--line-thin) dashed var(--color-border);padding:var(--space-md);border-radius:var(--radius-md)}.file-label input{border:0;padding:var(--space-sm) 0;font-size:var(--font-body)}.metric-line{font-variant-numeric:tabular-nums}.help-lines{font-size:var(--font-small);color:var(--color-muted);padding-left:var(--space-lg)}.full{width:100%}.hidden{display:none!important}dialog{width:calc(100% - 32px);max-width:420px;border:var(--line-thin) solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-lg);color:var(--color-ink);background:var(--color-paper);box-shadow:var(--shadow-dialog)}dialog::backdrop{background:var(--color-ink);opacity:.3}dialog h2{margin-bottom:var(--space-md)}dialog p{margin-bottom:var(--space-md)}dialog input{margin-bottom:var(--space-md)}.dialog-error{color:var(--color-error)}
@media(max-width:760px){.layout{grid-template-columns:1fr}.header-inner{padding:var(--space-md)}main{padding:var(--space-md)}.panel{padding:var(--space-md)}.page-heading{flex-direction:column}.save-state{max-width:110px;font-size:var(--font-caption)}.brand strong{font-size:var(--font-small)}.brand small{font-size:var(--font-caption)}.tabs{gap:var(--space-xs)}.tabs a{flex:1;padding:var(--space-sm)}.form-grid{grid-template-columns:1fr}.mini-grid{grid-template-columns:1fr 1fr}.player-grid{grid-template-columns:repeat(3,minmax(0,1fr))}h1{font-size:var(--font-title-mobile)}}

a.button{display:inline-flex;align-items:center;justify-content:center;min-height:var(--control-height);padding:var(--space-sm) var(--space-md);border:var(--line-thin) solid var(--color-primary);border-radius:var(--radius-md);background:var(--color-primary);color:var(--color-paper);font-weight:var(--weight-medium)}a.button:hover{background:var(--color-primary-hover);text-decoration:none}

.row>a{display:inline-flex;align-items:center;min-height:var(--control-height)}
.site-header .back{margin:0}

/* 首页：桌面保留两栏，手机常驻动作、按需打开同一份新建表单。 */
.directory-actions,.directory-mobile-empty{display:none}
.directory-dialog-heading{display:flex;align-items:center;justify-content:space-between;gap:var(--space-md);margin-bottom:var(--space-md)}
.directory-dialog-heading h2{margin:0}
.directory-dialog-heading button{flex-shrink:0}
.directory-create-dialog{max-height:calc(100dvh - 2 * var(--space-md));overflow-y:auto;overscroll-behavior:contain}
.directory-create-dialog .dialog-error:empty{display:none}
body.directory-modal-open{overflow:hidden}
@media(max-width:760px){
  .directory-actions{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-sm);position:sticky;top:0;z-index:var(--layer-sticky);background:var(--color-canvas);padding:var(--space-sm) 0;margin-top:calc(-1 * var(--space-sm));margin-bottom:var(--space-md)}
  .directory-forms .directory-create-panel,.directory-forms .directory-import-panel,.directory-desktop-empty{display:none}
  .directory-mobile-empty{display:inline}
  .directory-create-dialog{padding:var(--space-md)}
}

[hidden]{display:none!important}
.game-link{scroll-margin-top:calc(var(--control-height) + 2 * var(--space-md))}

/* All six days share one schedule; evening calculations stay inside their slot. */
.game-schedule{display:flex;gap:var(--space-sm);overflow-x:auto;max-width:100%;padding-block:var(--space-sm);margin-block:var(--space-md);overscroll-behavior-x:contain}
.game-schedule>a,.game-schedule>span{display:flex;flex:1 0 92px;flex-direction:column;justify-content:center;min-height:var(--control-height);padding:var(--space-sm);border:var(--line-thin) solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-paper);color:var(--color-muted);text-decoration:none;white-space:nowrap}
.game-schedule strong{font-size:var(--font-body)}
.game-schedule small{font-size:var(--font-caption)}
.game-schedule [aria-current=step]{color:var(--color-primary);background:var(--color-primary-soft);border-color:var(--color-primary)}
.schedule-steps{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-sm);margin-bottom:var(--space-md);font-size:var(--font-small);color:var(--color-muted)}
.schedule-steps>a,.schedule-steps>[data-schedule-step]{display:flex;align-items:center;min-height:var(--control-height);padding:var(--space-sm);border-bottom:var(--line-thin) solid transparent;text-decoration:none}
.schedule-steps [aria-current=step]{color:var(--color-primary);border-bottom-color:var(--color-primary);font-weight:var(--weight-medium)}

/* The save renderer keeps the current task in view; avoid a second native anchor jump. */
.action-workbench, #action-content, #night-content { overflow-anchor: none; }

/* Known changes remain visible while dependent night calculations are pending. */
/* One result review for every round and every entry point. */
dialog[data-review=settlement]{max-width:880px;max-height:calc(100dvh - 2 * var(--space-md));font-size:var(--font-body)}
dialog[data-review=settlement]>div{display:flex;flex-direction:column;max-height:calc(100dvh - 2 * var(--space-md) - 2 * var(--space-lg))}
.settlement-review-scroll{min-height:0;overflow:auto;white-space:normal;flex:1}
.settlement-review-scroll p{margin:0 0 var(--space-sm)}
.settlement-review-actions{flex:none;margin-top:var(--space-md)}
.settlement-review-section{margin-block:var(--space-md)}
.settlement-review-section h3{font-size:var(--font-body);margin-bottom:var(--space-sm)}
.settlement-review-section pre{margin:0;white-space:pre-wrap;overflow-wrap:anywhere;font:inherit;line-height:var(--line-body)}
[data-settlement-review-error]:empty{display:none}

.health-result>strong{display:block;font-variant-numeric:tabular-nums}
.health-step{display:block;font-size:var(--font-caption);line-height:var(--line-body);color:var(--color-muted);margin-top:var(--space-xs);overflow-wrap:anywhere}
.health-step[data-state=pending]{color:var(--color-warning)}
.health-step[data-state=error]{color:var(--color-error)}
.health-result details{margin-top:var(--space-xs);font-size:var(--font-caption)}
.health-result details>summary{min-height:var(--control-height);font-size:inherit}
.health-result ol{padding-left:var(--space-md);margin-block:var(--space-xs)}
