Spaces:
Sleeping
Sleeping
| :root { | |
| color-scheme: dark; | |
| --teal: #073f42; | |
| --teal-dark: #06292a; | |
| --gold: #d6a33c; | |
| --gold-bright: #ffd46f; | |
| --paper: #f2d99c; | |
| --paper-deep: #c9944d; | |
| --ink: #2a160b; | |
| --red: #a42b21; | |
| --blue: #10537d; | |
| --green: #176e5e; | |
| --shadow: 0 18px 48px rgba(0, 0, 0, 0.42); | |
| } | |
| * { | |
| box-sizing: border-box; | |
| } | |
| html, | |
| body { | |
| height: 100%; | |
| } | |
| body { | |
| margin: 0; | |
| color: #fff0bc; | |
| font-family: Georgia, "Times New Roman", serif; | |
| background: | |
| linear-gradient(90deg, rgba(6, 41, 42, 0.9), rgba(65, 36, 10, 0.65)), | |
| #241508; | |
| overflow: hidden; | |
| } | |
| button, | |
| textarea { | |
| font: inherit; | |
| } | |
| button { | |
| cursor: pointer; | |
| } | |
| button:disabled { | |
| cursor: default; | |
| } | |
| .game-board { | |
| width: min(1920px, 100vw); | |
| height: 100vh; | |
| display: grid; | |
| grid-template-rows: auto minmax(0, 1fr) auto; | |
| margin: 0 auto; | |
| padding: 0 0 8px; | |
| background: | |
| repeating-linear-gradient(0deg, rgba(255, 255, 255, 0.025) 0 1px, transparent 1px 18px), | |
| linear-gradient(180deg, #0c4141 0 15%, #261307 15% 100%); | |
| border: 3px solid #8e5f18; | |
| box-shadow: inset 0 0 0 3px #e0a83d, var(--shadow); | |
| } | |
| .top-banner { | |
| height: 128px; | |
| display: grid; | |
| grid-template-columns: 288px minmax(0, 1fr) 172px 94px; | |
| align-items: stretch; | |
| gap: 10px; | |
| padding: 6px 10px; | |
| background: | |
| linear-gradient(180deg, rgba(255, 233, 145, 0.16), transparent 32%), | |
| linear-gradient(90deg, #063538, #07484b 52%, #063538); | |
| border-bottom: 5px solid #b47b25; | |
| box-shadow: inset 0 -2px 0 #ffd476; | |
| } | |
| .bureau-crest { | |
| position: relative; | |
| display: grid; | |
| place-items: center; | |
| overflow: hidden; | |
| } | |
| .bureau-crest img { | |
| position: absolute; | |
| inset: 0; | |
| width: 100%; | |
| height: 100%; | |
| object-fit: fill; | |
| } | |
| .title-panel { | |
| position: relative; | |
| display: grid; | |
| place-items: center; | |
| align-content: center; | |
| min-width: 0; | |
| } | |
| .title-panel:before, | |
| .title-panel:after { | |
| content: ""; | |
| position: absolute; | |
| top: 58%; | |
| width: 120px; | |
| height: 11px; | |
| background: linear-gradient(90deg, transparent, var(--gold-bright), transparent); | |
| } | |
| .title-panel:before { | |
| left: 34px; | |
| } | |
| .title-panel:after { | |
| right: 34px; | |
| } | |
| .title-panel h1 { | |
| margin: 0; | |
| color: #ffc85f; | |
| font-size: clamp(3.4rem, 7vw, 6.3rem); | |
| line-height: 0.86; | |
| letter-spacing: 0; | |
| text-transform: uppercase; | |
| text-shadow: | |
| 0 3px 0 #5f3209, | |
| 0 6px 0 #171008, | |
| 0 0 18px rgba(255, 214, 105, 0.45); | |
| white-space: nowrap; | |
| } | |
| .title-panel p { | |
| margin: 10px 0 0; | |
| color: #ffd46f; | |
| font-size: 1.16rem; | |
| font-weight: 950; | |
| letter-spacing: 0.14em; | |
| text-transform: uppercase; | |
| } | |
| .title-panel h1[contenteditable="true"], | |
| .title-panel p[contenteditable="true"] { | |
| max-width: 100%; | |
| outline: 0; | |
| cursor: text; | |
| } | |
| .title-panel h1[contenteditable="true"]:focus, | |
| .title-panel p[contenteditable="true"]:focus { | |
| text-decoration: underline; | |
| text-decoration-color: rgba(255, 212, 111, 0.8); | |
| text-underline-offset: 0.12em; | |
| } | |
| .turn-panel, | |
| .gear-button { | |
| border: 4px solid #b98127; | |
| background: | |
| linear-gradient(180deg, rgba(255, 213, 109, 0.15), transparent), | |
| #08393c; | |
| box-shadow: inset 0 0 0 2px #52320b, 0 4px 0 #301a05; | |
| } | |
| .turn-panel { | |
| display: grid; | |
| place-items: center; | |
| align-content: center; | |
| color: #ffd46f; | |
| text-transform: uppercase; | |
| } | |
| .turn-panel span, | |
| .turn-panel small { | |
| font-weight: 950; | |
| letter-spacing: 0.08em; | |
| } | |
| .turn-panel strong { | |
| color: #fff0bc; | |
| font-size: 2.45rem; | |
| line-height: 1; | |
| } | |
| .gear-button { | |
| display: grid; | |
| place-items: center; | |
| color: #ffdf86; | |
| font-size: 3.3rem; | |
| } | |
| .gear-button.muted { | |
| opacity: 0.62; | |
| } | |
| .table-grid { | |
| height: auto; | |
| min-height: 0; | |
| display: grid; | |
| grid-template-columns: 286px minmax(0, 1fr) 334px; | |
| gap: 8px; | |
| padding: 8px; | |
| } | |
| .left-rail, | |
| .right-rail, | |
| .center-stage { | |
| min-height: 0; | |
| } | |
| .left-rail, | |
| .right-rail { | |
| display: grid; | |
| gap: 10px; | |
| } | |
| .left-rail { | |
| grid-template-rows: minmax(0, 1fr) 92px 62px 46px 42px; | |
| } | |
| .right-rail { | |
| grid-template-rows: minmax(0, 0.92fr) minmax(0, 1fr); | |
| } | |
| .wanted-card, | |
| .active-units, | |
| .lookout-board, | |
| .statements-panel { | |
| border: 4px solid #b98127; | |
| box-shadow: inset 0 0 0 2px #55320b, var(--shadow); | |
| } | |
| .wanted-card { | |
| min-height: 0; | |
| display: grid; | |
| justify-items: center; | |
| gap: 7px; | |
| padding: 14px; | |
| color: var(--ink); | |
| background: | |
| linear-gradient(180deg, rgba(255, 255, 255, 0.45), transparent 24%), | |
| var(--paper); | |
| } | |
| .wanted-card h2 { | |
| margin: 0; | |
| color: #8b2217; | |
| font-size: 3rem; | |
| line-height: 0.95; | |
| letter-spacing: 0.02em; | |
| text-transform: uppercase; | |
| } | |
| .suspect-image { | |
| width: 198px; | |
| height: min(224px, 28vh); | |
| object-fit: cover; | |
| border: 2px solid #9e6d2c; | |
| box-shadow: inset 0 0 0 3px rgba(255, 239, 185, 0.5); | |
| } | |
| .wanted-card dl { | |
| width: 100%; | |
| display: grid; | |
| grid-template-columns: auto minmax(0, 1fr); | |
| gap: 4px 8px; | |
| margin: 0; | |
| } | |
| .wanted-card dt { | |
| color: #251304; | |
| font-weight: 950; | |
| text-transform: uppercase; | |
| } | |
| .wanted-card dd { | |
| min-width: 0; | |
| margin: 0; | |
| color: #5c1f13; | |
| font-weight: 800; | |
| line-height: 1.02; | |
| } | |
| #wantedLastSeen { | |
| color: #8b2217; | |
| } | |
| .wanted-card strong { | |
| color: #4b2109; | |
| font-size: 1.55rem; | |
| } | |
| .wanted-card small { | |
| color: #4b2109; | |
| font-weight: 950; | |
| letter-spacing: 0.08em; | |
| text-transform: uppercase; | |
| } | |
| .active-units { | |
| display: grid; | |
| grid-template-columns: minmax(0, 1fr) auto; | |
| grid-template-rows: auto minmax(0, 1fr); | |
| align-items: center; | |
| gap: 4px 8px; | |
| padding: 9px 10px; | |
| background: | |
| repeating-linear-gradient(170deg, rgba(255, 255, 255, 0.04) 0 1px, transparent 1px 14px), | |
| var(--teal); | |
| } | |
| .active-units h2, | |
| .lookout-board h2, | |
| .statements-panel h2 { | |
| margin: 0; | |
| color: #ffd46f; | |
| font-size: 1.3rem; | |
| letter-spacing: 0.08em; | |
| text-transform: uppercase; | |
| text-shadow: 0 2px 0 #311a06; | |
| } | |
| .active-units h2 { | |
| grid-column: 1 / -1; | |
| font-size: 1.08rem; | |
| } | |
| .unit-row { | |
| min-width: 0; | |
| display: grid; | |
| grid-template-columns: repeat(6, 15px); | |
| gap: 4px; | |
| align-content: center; | |
| } | |
| .unit-dot { | |
| width: 15px; | |
| height: 19px; | |
| display: block; | |
| border-radius: 50% 50% 7px 7px; | |
| border: 1px solid rgba(255, 239, 185, 0.75); | |
| } | |
| .unit-dot.ready { | |
| background: | |
| radial-gradient(circle at 50% 24%, #a6e4ff 0 3px, transparent 4px), | |
| linear-gradient(135deg, #1784bd, #0b4265); | |
| } | |
| .unit-dot.used { | |
| background: | |
| radial-gradient(circle at 50% 24%, #c2c2b6 0 3px, transparent 4px), | |
| linear-gradient(135deg, #777d77, #3d413d); | |
| opacity: 0.72; | |
| } | |
| .active-units strong { | |
| justify-self: end; | |
| color: #ffdf86; | |
| font-size: 1.08rem; | |
| white-space: nowrap; | |
| } | |
| .advance-button, | |
| .new-case-button, | |
| .search-button { | |
| min-height: 50px; | |
| color: #fff4c2; | |
| font-size: 1.45rem; | |
| font-weight: 950; | |
| text-transform: uppercase; | |
| border: 3px solid #a97522; | |
| box-shadow: inset 0 0 0 2px rgba(255, 239, 185, 0.24), 0 5px 0 #2c1907; | |
| } | |
| .advance-button { | |
| background: linear-gradient(180deg, #1d6796, #0c436e); | |
| } | |
| .advance-button.processing, | |
| .new-case-button.processing { | |
| background: linear-gradient(180deg, #c8862c, #7a4e0d); | |
| color: #1a0e02; | |
| cursor: progress; | |
| animation: advance-pulse 1.1s ease-in-out infinite; | |
| } | |
| @keyframes advance-pulse { | |
| 0%, 100% { box-shadow: inset 0 0 0 2px rgba(255, 239, 185, 0.24), 0 5px 0 #2c1907, 0 0 0 0 rgba(255, 215, 100, 0.0); } | |
| 50% { box-shadow: inset 0 0 0 2px rgba(255, 239, 185, 0.6), 0 5px 0 #2c1907, 0 0 16px 4px rgba(255, 215, 100, 0.55); } | |
| } | |
| .new-case-button { | |
| background: linear-gradient(180deg, #25765f, #104d43); | |
| } | |
| .search-button { | |
| background: linear-gradient(180deg, #c33d32, #8b2119); | |
| } | |
| .center-stage { | |
| display: grid; | |
| grid-template-rows: 130px minmax(0, 1fr); | |
| gap: 8px; | |
| } | |
| .tactic-strip { | |
| padding: 8px 12px 10px; | |
| color: var(--ink); | |
| background: | |
| linear-gradient(180deg, rgba(255, 255, 255, 0.45), transparent 42%), | |
| var(--paper); | |
| border: 4px solid #b98127; | |
| box-shadow: inset 0 0 0 2px #56330c, var(--shadow); | |
| } | |
| .tactic-strip h2 { | |
| margin: 0 0 8px; | |
| color: #143d3d; | |
| font-size: 1.55rem; | |
| text-align: center; | |
| letter-spacing: 0.12em; | |
| text-transform: uppercase; | |
| } | |
| .tactic-tray { | |
| display: grid; | |
| grid-template-columns: repeat(5, minmax(132px, 1fr)); | |
| gap: 9px; | |
| } | |
| .tactic-card { | |
| position: relative; | |
| height: 78px; | |
| display: grid; | |
| grid-template-columns: 66px minmax(0, 1fr); | |
| grid-template-rows: minmax(0, 1fr) auto; | |
| align-items: center; | |
| gap: 0 8px; | |
| padding: 8px 10px; | |
| color: var(--ink); | |
| text-align: left; | |
| background: | |
| linear-gradient(180deg, rgba(255, 255, 255, 0.46), transparent 50%), | |
| #f2d99c; | |
| border: 3px solid #a97522; | |
| box-shadow: inset 0 0 0 2px rgba(80, 43, 8, 0.25), 0 4px 0 rgba(54, 30, 5, 0.55); | |
| } | |
| .tactic-card:disabled { | |
| filter: grayscale(0.65); | |
| opacity: 0.58; | |
| } | |
| .tactic-card img { | |
| grid-row: 1 / 3; | |
| width: 62px; | |
| height: 62px; | |
| object-fit: contain; | |
| } | |
| .tactic-card span { | |
| min-width: 0; | |
| color: #201005; | |
| font-size: 0.96rem; | |
| font-weight: 950; | |
| line-height: 1.02; | |
| text-transform: uppercase; | |
| } | |
| .tactic-card strong { | |
| color: #201005; | |
| font-size: 1.15rem; | |
| } | |
| .tactic-preview { | |
| position: absolute; | |
| left: 50%; | |
| bottom: calc(100% + 10px); | |
| z-index: 30; | |
| width: min(260px, 70vw); | |
| display: none; | |
| transform: translateX(-50%); | |
| padding: 10px 12px; | |
| color: #173a35; | |
| font-size: 0.92rem; | |
| font-style: normal; | |
| line-height: 1.25; | |
| background: #fff1bd; | |
| border: 3px solid #a97522; | |
| box-shadow: 0 14px 32px rgba(0, 0, 0, 0.38); | |
| } | |
| .tactic-preview:after { | |
| content: ""; | |
| position: absolute; | |
| left: 50%; | |
| bottom: -10px; | |
| width: 16px; | |
| height: 16px; | |
| transform: translateX(-50%) rotate(45deg); | |
| background: #fff1bd; | |
| border-right: 3px solid #a97522; | |
| border-bottom: 3px solid #a97522; | |
| } | |
| .tactic-card:hover .tactic-preview, | |
| .tactic-card:focus-visible .tactic-preview { | |
| display: block; | |
| } | |
| .map-shell { | |
| min-height: 0; | |
| display: grid; | |
| grid-template-rows: 38px minmax(0, 1fr) 62px; | |
| padding: 0; | |
| } | |
| .layer-tabs { | |
| display: flex; | |
| align-items: end; | |
| gap: 4px; | |
| padding-left: 14px; | |
| } | |
| .layer-tabs button { | |
| min-width: 112px; | |
| height: 40px; | |
| color: #ffdf86; | |
| font-size: 1.16rem; | |
| font-weight: 950; | |
| background: linear-gradient(180deg, #0c5d5d, #063738); | |
| border: 3px solid #a97522; | |
| border-bottom: 0; | |
| text-transform: capitalize; | |
| } | |
| .layer-tabs button.active { | |
| color: #251304; | |
| background: linear-gradient(180deg, #ffd461, #d4a231); | |
| } | |
| .map-wrap { | |
| position: relative; | |
| min-height: 0; | |
| overflow: hidden; | |
| background: #0a1414; | |
| border: 5px solid #b98127; | |
| border-radius: 16px 16px 0 0; | |
| box-shadow: inset 0 0 0 3px #4c2c08, var(--shadow); | |
| cursor: grab; | |
| touch-action: none; | |
| } | |
| .map-wrap:active { | |
| cursor: grabbing; | |
| } | |
| .map-canvas { | |
| position: absolute; | |
| inset: 0; | |
| transform-origin: 0 0; | |
| will-change: transform; | |
| } | |
| #mapImage { | |
| display: block; | |
| width: 100%; | |
| height: 100%; | |
| object-fit: contain; | |
| user-select: none; | |
| pointer-events: none; | |
| } | |
| .overlay-layer { | |
| position: absolute; | |
| inset: 0; | |
| pointer-events: none; | |
| } | |
| .map-controls { | |
| position: absolute; | |
| right: 12px; | |
| top: 12px; | |
| z-index: 18; | |
| display: flex; | |
| align-items: center; | |
| gap: 5px; | |
| max-width: calc(100% - 24px); | |
| padding: 5px; | |
| color: var(--ink); | |
| background: rgba(242, 217, 156, 0.94); | |
| border: 2px solid #a97522; | |
| box-shadow: 0 10px 24px rgba(0, 0, 0, 0.34); | |
| } | |
| .map-controls button, | |
| .map-controls output { | |
| min-width: 34px; | |
| height: 30px; | |
| display: grid; | |
| place-items: center; | |
| color: var(--ink); | |
| font-weight: 950; | |
| background: #ffd46f; | |
| border: 1px solid #8f5d18; | |
| } | |
| .map-controls output { | |
| min-width: 52px; | |
| background: #fff0bc; | |
| } | |
| .map-control-divider { | |
| width: 1px; | |
| height: 24px; | |
| background: #8f5d18; | |
| } | |
| .map-controls .map-visibility-toggle, | |
| .map-controls #witnessModeButton { | |
| min-width: auto; | |
| padding: 0 8px; | |
| font-size: 0.72rem; | |
| } | |
| .map-controls .map-visibility-toggle:not(.active) { | |
| color: #6c5c42; | |
| background: #c8b98f; | |
| text-decoration: line-through; | |
| } | |
| .map-controls #witnessModeButton.active { | |
| color: #fff4c2; | |
| background: #176e5e; | |
| } | |
| .focus-marker { | |
| position: absolute; | |
| width: 30px; | |
| height: 30px; | |
| transform: translate(-50%, -50%); | |
| border: 3px solid #ffdf86; | |
| border-radius: 50%; | |
| box-shadow: 0 0 0 4px rgba(25, 105, 100, 0.35), 0 0 14px rgba(255, 212, 111, 0.62); | |
| } | |
| .map-token, | |
| .witness-token { | |
| position: absolute; | |
| pointer-events: auto; | |
| border: 0; | |
| background: transparent; | |
| filter: drop-shadow(0 10px 8px rgba(0, 0, 0, 0.52)); | |
| } | |
| .map-token { | |
| width: 40px; | |
| height: 48px; | |
| transform: translate( | |
| calc(-50% + var(--token-offset-x, 0px)), | |
| calc(-82% + var(--token-offset-y, 0px)) | |
| ); | |
| } | |
| .map-token.junction_lockdown { | |
| width: 58px; | |
| height: 44px; | |
| } | |
| .map-token.roadblock { | |
| width: 32px; | |
| height: 26px; | |
| } | |
| .map-token.patrol_unit { | |
| width: 48px; | |
| height: 54px; | |
| } | |
| .map-token.search_team { | |
| width: 50px; | |
| height: 50px; | |
| } | |
| .map-token.lookout_board { | |
| width: 48px; | |
| height: 58px; | |
| } | |
| .witness-token { | |
| width: 38px; | |
| height: 52px; | |
| transform: translate( | |
| calc(-50% + var(--token-offset-x, 0px)), | |
| calc(-86% + var(--token-offset-y, 0px)) | |
| ); | |
| } | |
| #selectionLayer { z-index: 10; } | |
| #tacticLayer { z-index: 11; } | |
| #witnessLayer { z-index: 12; } | |
| .map-token.co-located, | |
| .witness-token.co-located { | |
| filter: drop-shadow(0 10px 8px rgba(0, 0, 0, 0.62)); | |
| } | |
| .map-token img, | |
| .witness-token img { | |
| width: 100%; | |
| height: 100%; | |
| object-fit: contain; | |
| } | |
| .witness-token strong { | |
| position: absolute; | |
| right: -1px; | |
| top: 4px; | |
| min-width: 16px; | |
| min-height: 16px; | |
| display: grid; | |
| place-items: center; | |
| color: #fff4c2; | |
| font-size: 0.62rem; | |
| border-radius: 50%; | |
| background: #8e2118; | |
| border: 1px solid #ffdf86; | |
| } | |
| .witness-token.viewed strong { | |
| background: #176e5e; | |
| } | |
| .witness-cluster-token { | |
| z-index: 4; | |
| width: 42px; | |
| height: 56px; | |
| transform: translate(-50%, -86%); | |
| } | |
| .witness-cluster-token strong { | |
| right: -3px; | |
| top: 1px; | |
| min-width: 19px; | |
| min-height: 19px; | |
| font-size: 0.68rem; | |
| } | |
| .witness-cluster-member { | |
| opacity: 0; | |
| pointer-events: none; | |
| } | |
| .cluster-report-list { | |
| display: grid; | |
| gap: 7px; | |
| max-height: 230px; | |
| overflow: auto; | |
| } | |
| .cluster-report-button { | |
| display: grid; | |
| gap: 3px; | |
| padding: 8px; | |
| color: #251304; | |
| text-align: left; | |
| background: #fff0bc; | |
| border: 2px solid #a97522; | |
| } | |
| .cluster-report-button.viewed { | |
| border-color: #176e5e; | |
| background: #d7eee0; | |
| } | |
| .cluster-report-button span { | |
| font-size: 0.76rem; | |
| line-height: 1.25; | |
| } | |
| .cluster-report-button em { | |
| font-style: normal; | |
| font-size: 0.7rem; | |
| font-weight: 700; | |
| color: #6b3812; | |
| letter-spacing: 0.04em; | |
| text-transform: uppercase; | |
| } | |
| .map-message { | |
| position: absolute; | |
| left: 14px; | |
| right: 14px; | |
| bottom: 12px; | |
| min-height: 34px; | |
| display: flex; | |
| align-items: center; | |
| padding: 0 12px; | |
| color: #fff4c2; | |
| font-weight: 800; | |
| background: rgba(7, 63, 66, 0.88); | |
| border: 2px solid rgba(255, 212, 111, 0.7); | |
| pointer-events: none; | |
| } | |
| .legend-strip { | |
| min-height: 62px; | |
| display: grid; | |
| grid-template-columns: repeat(7, minmax(0, 1fr)); | |
| gap: 6px; | |
| padding: 7px 9px; | |
| color: var(--ink); | |
| background: | |
| linear-gradient(180deg, rgba(255, 255, 255, 0.45), transparent), | |
| var(--paper); | |
| border: 5px solid #b98127; | |
| border-top: 0; | |
| box-shadow: inset 0 0 0 2px #55320b; | |
| } | |
| .legend-item { | |
| min-width: 0; | |
| display: grid; | |
| grid-template-columns: 42px minmax(0, 1fr); | |
| grid-template-rows: 1fr 1fr; | |
| align-items: center; | |
| column-gap: 6px; | |
| } | |
| .legend-item img { | |
| grid-row: 1 / 3; | |
| width: 42px; | |
| height: 52px; | |
| object-fit: contain; | |
| } | |
| .legend-item strong { | |
| overflow: hidden; | |
| font-size: 0.76rem; | |
| font-weight: 950; | |
| text-overflow: ellipsis; | |
| text-transform: uppercase; | |
| white-space: nowrap; | |
| } | |
| .legend-item span { | |
| overflow: hidden; | |
| font-family: "Segoe Print", "Bradley Hand ITC", cursive; | |
| font-size: 0.72rem; | |
| text-overflow: ellipsis; | |
| white-space: nowrap; | |
| } | |
| .lookout-board, | |
| .statements-panel { | |
| min-height: 0; | |
| display: grid; | |
| gap: 8px; | |
| padding: 12px; | |
| background: | |
| repeating-linear-gradient(172deg, rgba(255, 255, 255, 0.035) 0 1px, transparent 1px 16px), | |
| var(--teal); | |
| } | |
| .lookout-board { | |
| grid-template-rows: auto minmax(0, 1fr); | |
| } | |
| .statements-panel { | |
| grid-template-rows: auto minmax(0, 1fr); | |
| } | |
| .paper-note { | |
| min-height: 0; | |
| display: grid; | |
| grid-template-rows: auto minmax(0, 1fr) auto auto; | |
| gap: 8px; | |
| padding: 14px; | |
| color: var(--ink); | |
| background: | |
| linear-gradient(180deg, rgba(255, 255, 255, 0.52), transparent 34%), | |
| var(--paper); | |
| border: 3px solid #a97522; | |
| box-shadow: inset 0 0 0 2px rgba(86, 51, 12, 0.28); | |
| } | |
| .paper-note h3 { | |
| margin: 0; | |
| color: #8b2217; | |
| text-align: center; | |
| text-transform: uppercase; | |
| } | |
| .paper-note textarea { | |
| width: 100%; | |
| min-height: 126px; | |
| resize: none; | |
| color: #193b34; | |
| font-family: "Segoe Print", "Bradley Hand ITC", cursive; | |
| font-size: 1.05rem; | |
| line-height: 1.42; | |
| background: | |
| repeating-linear-gradient(180deg, transparent 0 30px, rgba(35, 87, 72, 0.12) 31px), | |
| rgba(255, 249, 218, 0.18); | |
| border: 1px dashed rgba(80, 43, 8, 0.35); | |
| outline: none; | |
| } | |
| .paper-note button, | |
| .ask-button, | |
| .remove-button { | |
| min-height: 36px; | |
| color: #fff4c2; | |
| font-weight: 950; | |
| background: linear-gradient(180deg, #25765f, #104d43); | |
| border: 2px solid #a97522; | |
| } | |
| .paper-note p { | |
| margin: 0; | |
| color: #5b3110; | |
| font-weight: 800; | |
| } | |
| .statement-list { | |
| min-height: 0; | |
| display: grid; | |
| align-content: start; | |
| gap: 8px; | |
| overflow: auto; | |
| } | |
| .statement-card { | |
| position: relative; | |
| min-height: 78px; | |
| padding: 9px 44px 9px 10px; | |
| color: var(--ink); | |
| background: | |
| linear-gradient(180deg, rgba(255, 255, 255, 0.45), transparent 50%), | |
| #f0d69a; | |
| border: 2px solid #a97522; | |
| } | |
| .statement-card div { | |
| display: flex; | |
| justify-content: space-between; | |
| gap: 8px; | |
| } | |
| .statement-card strong { | |
| font-size: 0.92rem; | |
| text-transform: uppercase; | |
| } | |
| .statement-card span { | |
| color: #176e5e; | |
| font-size: 0.72rem; | |
| font-weight: 950; | |
| text-transform: uppercase; | |
| } | |
| .statement-card p { | |
| margin: 5px 0 0; | |
| font-family: "Segoe Print", "Bradley Hand ITC", cursive; | |
| font-size: 0.84rem; | |
| line-height: 1.22; | |
| } | |
| .statement-card mark { | |
| position: absolute; | |
| right: 9px; | |
| top: 50%; | |
| width: 30px; | |
| height: 30px; | |
| display: grid; | |
| place-items: center; | |
| transform: translateY(-50%); | |
| color: #176e5e; | |
| font-size: 1.35rem; | |
| font-weight: 950; | |
| background: transparent; | |
| border: 3px solid #176e5e; | |
| border-radius: 50%; | |
| } | |
| .statement-card.empty mark { | |
| display: none; | |
| } | |
| .event-ticker { | |
| margin: 0 8px; | |
| min-height: 28px; | |
| display: flex; | |
| align-items: center; | |
| padding: 0 12px; | |
| color: #ffdf86; | |
| background: rgba(0, 0, 0, 0.34); | |
| border: 2px solid rgba(255, 212, 111, 0.45); | |
| overflow: hidden; | |
| text-overflow: ellipsis; | |
| white-space: nowrap; | |
| } | |
| .detail-popup { | |
| position: fixed; | |
| z-index: 80; | |
| width: 280px; | |
| display: grid; | |
| gap: 8px; | |
| padding: 12px; | |
| color: var(--ink); | |
| background: | |
| linear-gradient(180deg, rgba(255, 255, 255, 0.48), transparent 46%), | |
| var(--paper); | |
| border: 4px solid #a97522; | |
| box-shadow: var(--shadow); | |
| } | |
| .drag-ghost { | |
| position: fixed; | |
| z-index: 120; | |
| width: 136px; | |
| min-height: 54px; | |
| display: grid; | |
| grid-template-columns: 46px minmax(0, 1fr); | |
| align-items: center; | |
| gap: 7px; | |
| padding: 6px 9px; | |
| color: var(--ink); | |
| font-weight: 950; | |
| text-transform: uppercase; | |
| background: | |
| linear-gradient(180deg, rgba(255, 255, 255, 0.48), transparent), | |
| var(--paper); | |
| border: 3px solid #a97522; | |
| box-shadow: 0 16px 34px rgba(0, 0, 0, 0.45); | |
| pointer-events: none; | |
| } | |
| .drag-ghost img { | |
| width: 44px; | |
| height: 44px; | |
| object-fit: contain; | |
| } | |
| .drag-ghost span { | |
| min-width: 0; | |
| font-size: 0.78rem; | |
| line-height: 1.05; | |
| } | |
| .detail-popup[hidden] { | |
| display: none; | |
| } | |
| .detail-popup > img { | |
| width: 58px; | |
| height: 68px; | |
| object-fit: contain; | |
| } | |
| .detail-popup h3 { | |
| margin: 0; | |
| color: #8b2217; | |
| font-size: 1.1rem; | |
| text-transform: uppercase; | |
| } | |
| .detail-popup p { | |
| margin: 0; | |
| line-height: 1.32; | |
| } | |
| .detail-popup dl { | |
| display: grid; | |
| grid-template-columns: auto minmax(0, 1fr); | |
| gap: 4px 8px; | |
| margin: 0; | |
| } | |
| .detail-popup dt { | |
| font-weight: 950; | |
| text-transform: uppercase; | |
| } | |
| .detail-popup dd { | |
| margin: 0; | |
| } | |
| .popup-close { | |
| position: absolute; | |
| right: 6px; | |
| top: 5px; | |
| width: 28px; | |
| height: 28px; | |
| color: #fff4c2; | |
| background: #8b2217; | |
| border: 2px solid #a97522; | |
| } | |
| .remove-button { | |
| background: linear-gradient(180deg, #c33d32, #8b2119); | |
| } | |
| .settings-dialog { | |
| width: min(760px, calc(100vw - 28px)); | |
| max-height: calc(100dvh - 28px); | |
| color: var(--ink); | |
| background: transparent; | |
| border: 0; | |
| padding: 0; | |
| } | |
| .settings-dialog::backdrop { | |
| background: rgba(0, 0, 0, 0.58); | |
| } | |
| .settings-panel { | |
| display: grid; | |
| width: 100%; | |
| box-sizing: border-box; | |
| gap: 14px; | |
| padding: 16px; | |
| background: | |
| linear-gradient(180deg, rgba(255, 255, 255, 0.42), transparent 42%), | |
| var(--paper); | |
| border: 5px solid #a97522; | |
| box-shadow: var(--shadow); | |
| max-height: calc(100dvh - 28px); | |
| overflow-y: auto; | |
| overflow-x: hidden; | |
| overscroll-behavior: contain; | |
| } | |
| .settings-panel > * { | |
| min-width: 0; | |
| } | |
| .settings-panel header { | |
| display: flex; | |
| align-items: center; | |
| justify-content: space-between; | |
| gap: 12px; | |
| } | |
| .settings-panel h2 { | |
| margin: 0; | |
| color: #8b2217; | |
| font-size: 2rem; | |
| text-transform: uppercase; | |
| } | |
| .settings-panel header button { | |
| width: 34px; | |
| height: 34px; | |
| color: #fff4c2; | |
| background: #8b2217; | |
| border: 2px solid #a97522; | |
| } | |
| .settings-grid { | |
| display: grid; | |
| min-width: 0; | |
| grid-template-columns: repeat(2, minmax(0, 1fr)); | |
| gap: 10px; | |
| } | |
| .settings-grid label { | |
| min-width: 0; | |
| display: grid; | |
| gap: 4px; | |
| color: #482309; | |
| font-weight: 950; | |
| text-transform: uppercase; | |
| } | |
| .settings-wide { | |
| grid-column: 1 / -1; | |
| } | |
| .settings-subgrid { | |
| display: grid; | |
| grid-template-columns: repeat(2, minmax(0, 1fr)); | |
| gap: 10px; | |
| padding: 12px; | |
| background: rgba(139, 34, 23, 0.07); | |
| border: 2px dashed rgba(139, 34, 23, 0.45); | |
| } | |
| .settings-subgrid[hidden] { | |
| display: none; | |
| } | |
| .settings-hint { | |
| margin: 0; | |
| color: #5f3215; | |
| font-size: 0.82rem; | |
| font-weight: 750; | |
| line-height: 1.35; | |
| text-transform: none; | |
| } | |
| .settings-grid input, | |
| .settings-grid select { | |
| width: 100%; | |
| min-width: 0; | |
| box-sizing: border-box; | |
| min-height: 36px; | |
| color: var(--ink); | |
| background: #fff0bc; | |
| border: 2px solid #a97522; | |
| padding: 6px 8px; | |
| } | |
| .llama-status { | |
| margin: 0; | |
| padding: 10px; | |
| color: #173a35; | |
| font-weight: 850; | |
| background: rgba(23, 110, 94, 0.12); | |
| border-left: 5px solid #176e5e; | |
| overflow-wrap: anywhere; | |
| } | |
| .settings-actions { | |
| display: flex; | |
| flex-wrap: wrap; | |
| gap: 8px; | |
| } | |
| .settings-actions button { | |
| min-height: 38px; | |
| padding: 0 12px; | |
| color: #fff4c2; | |
| font-weight: 950; | |
| background: linear-gradient(180deg, #25765f, #104d43); | |
| border: 2px solid #a97522; | |
| } | |
| @media (max-width: 700px) { | |
| .settings-grid, | |
| .settings-subgrid { | |
| grid-template-columns: 1fr; | |
| } | |
| } | |
| .setup-overlay { | |
| position: fixed; | |
| inset: 0; | |
| z-index: 1000; | |
| display: grid; | |
| place-items: center; | |
| padding: 24px; | |
| background: rgba(7, 17, 19, 0.82); | |
| backdrop-filter: blur(6px); | |
| } | |
| .setup-overlay[hidden] { | |
| display: none; | |
| } | |
| .setup-card { | |
| width: min(620px, 92vw); | |
| display: grid; | |
| gap: 16px; | |
| padding: 34px; | |
| color: #3e210d; | |
| text-align: center; | |
| background: linear-gradient(145deg, #f8e7ad, #d7b86b); | |
| border: 5px solid #6d3c12; | |
| box-shadow: inset 0 0 0 3px #f8da82, 0 24px 70px #000; | |
| } | |
| .setup-card small { | |
| font-weight: 950; | |
| letter-spacing: 0.16em; | |
| text-transform: uppercase; | |
| } | |
| .setup-card h2 { | |
| margin: 0; | |
| font-size: clamp(2rem, 5vw, 3.4rem); | |
| line-height: 0.95; | |
| text-transform: uppercase; | |
| } | |
| .setup-card p { | |
| margin: 0; | |
| font-size: 1.08rem; | |
| font-weight: 750; | |
| } | |
| .setup-card progress { | |
| width: 100%; | |
| height: 24px; | |
| accent-color: #176e5e; | |
| } | |
| .setup-start-button { | |
| min-height: 72px; | |
| color: #fff4c2; | |
| font-size: 1.8rem; | |
| font-weight: 1000; | |
| text-transform: uppercase; | |
| background: linear-gradient(180deg, #2b8b69, #104d43); | |
| border: 4px solid #a97522; | |
| box-shadow: inset 0 0 0 2px rgba(255, 239, 185, 0.3), 0 7px 0 #2c1907; | |
| } | |
| .setup-start-button:disabled { | |
| cursor: wait; | |
| filter: grayscale(0.7); | |
| opacity: 0.72; | |
| } | |
| .setup-overlay.ready .setup-start-button { | |
| animation: setup-ready-pulse 1.8s ease-in-out infinite; | |
| } | |
| .setup-settings-button { | |
| justify-self: center; | |
| color: #4c2b12; | |
| font-weight: 900; | |
| background: transparent; | |
| border: 0; | |
| text-decoration: underline; | |
| } | |
| .setup-picker { | |
| display: grid; | |
| gap: 12px; | |
| padding: 18px; | |
| text-align: left; | |
| background: rgba(255, 248, 222, 0.72); | |
| border: 2px solid #a97522; | |
| border-radius: 6px; | |
| } | |
| .setup-picker[hidden] { display: none; } | |
| .setup-picker-intro { | |
| margin: 0; | |
| font-size: 0.98rem; | |
| font-weight: 750; | |
| color: #4c2b12; | |
| } | |
| .setup-storage-hint { | |
| padding: 8px 10px; | |
| overflow-wrap: anywhere; | |
| font-size: 0.82rem ; | |
| color: #4c2b12; | |
| background: rgba(255, 255, 255, 0.42); | |
| border-left: 4px solid #176e5e; | |
| } | |
| .setup-picker-grid { | |
| display: grid; | |
| grid-template-columns: repeat(2, minmax(0, 1fr)); | |
| gap: 12px 16px; | |
| } | |
| .setup-picker-grid label { | |
| display: grid; | |
| gap: 4px; | |
| font-weight: 850; | |
| font-size: 0.86rem; | |
| text-transform: uppercase; | |
| letter-spacing: 0.04em; | |
| color: #4c2b12; | |
| } | |
| .setup-picker-grid select { | |
| padding: 8px 10px; | |
| font-size: 0.95rem; | |
| font-weight: 600; | |
| color: #2c1907; | |
| background: #fff8d8; | |
| border: 2px solid #6d3c12; | |
| border-radius: 4px; | |
| text-transform: none; | |
| letter-spacing: 0; | |
| } | |
| .setup-picker-grid small { | |
| font-weight: 500; | |
| font-size: 0.78rem; | |
| text-transform: none; | |
| letter-spacing: 0; | |
| color: #5a3e1f; | |
| } | |
| @media (max-width: 700px) { | |
| .setup-picker-grid { grid-template-columns: minmax(0, 1fr); } | |
| } | |
| @keyframes setup-ready-pulse { | |
| 50% { transform: scale(1.025); box-shadow: inset 0 0 0 2px rgba(255, 239, 185, 0.4), 0 10px 0 #2c1907, 0 0 30px rgba(255, 214, 101, 0.65); } | |
| } | |
| @media (max-width: 1200px) { | |
| .top-banner { | |
| height: auto; | |
| grid-template-columns: 190px minmax(0, 1fr) 132px 72px; | |
| } | |
| .table-grid { | |
| height: auto; | |
| grid-template-columns: 220px minmax(0, 1fr); | |
| } | |
| .right-rail { | |
| grid-column: 1 / -1; | |
| grid-template-columns: 1fr 1fr; | |
| grid-template-rows: minmax(260px, 1fr); | |
| } | |
| .tactic-tray { | |
| grid-template-columns: repeat(3, minmax(132px, 1fr)); | |
| } | |
| .center-stage { | |
| grid-template-rows: auto minmax(620px, 68vh); | |
| } | |
| } | |
| @media (max-width: 1400px) { | |
| .top-banner { | |
| grid-template-columns: 250px minmax(0, 1fr) 150px 78px; | |
| } | |
| .title-panel:before, | |
| .title-panel:after { | |
| display: none; | |
| } | |
| .title-panel h1 { | |
| font-size: clamp(3rem, 5.4vw, 4.35rem); | |
| } | |
| .title-panel p { | |
| font-size: 0.94rem; | |
| } | |
| .turn-panel strong { | |
| font-size: 1.72rem; | |
| } | |
| .gear-button { | |
| font-size: 2.5rem; | |
| } | |
| .table-grid { | |
| grid-template-columns: 250px minmax(0, 1fr) 300px; | |
| } | |
| .wanted-card h2 { | |
| font-size: 2.35rem; | |
| } | |
| .suspect-image { | |
| width: 172px; | |
| height: 206px; | |
| } | |
| .wanted-card { | |
| gap: 5px; | |
| padding: 10px; | |
| } | |
| .wanted-card dl { | |
| font-size: 0.94rem; | |
| gap: 3px 7px; | |
| } | |
| .wanted-card strong { | |
| font-size: 1.25rem; | |
| } | |
| .tactic-tray { | |
| grid-template-columns: repeat(5, minmax(0, 1fr)); | |
| } | |
| .tactic-card { | |
| grid-template-columns: 48px minmax(0, 1fr); | |
| gap: 0 5px; | |
| padding: 7px; | |
| } | |
| .tactic-card img { | |
| width: 48px; | |
| height: 48px; | |
| } | |
| .tactic-card span { | |
| font-size: 0.78rem; | |
| } | |
| .tactic-card strong { | |
| font-size: 0.95rem; | |
| } | |
| .right-rail { | |
| min-width: 0; | |
| } | |
| } | |
| @media (max-width: 760px) { | |
| .top-banner, | |
| .table-grid, | |
| .right-rail { | |
| grid-template-columns: 1fr; | |
| } | |
| .bureau-crest { | |
| min-height: 126px; | |
| } | |
| .title-panel h1 { | |
| font-size: 3rem; | |
| white-space: normal; | |
| text-align: center; | |
| } | |
| .table-grid { | |
| min-height: 0; | |
| } | |
| .tactic-tray, | |
| .legend-strip { | |
| grid-template-columns: 1fr; | |
| } | |
| .map-shell { | |
| grid-template-rows: auto minmax(520px, 65vh) auto; | |
| } | |
| } | |
| body { | |
| position: relative; | |
| } | |
| .game-board { | |
| position: fixed; | |
| left: 50%; | |
| top: 50%; | |
| width: 1672px; | |
| height: 940px; | |
| min-height: 0; | |
| transform: translate(-50%, -50%) scale(var(--app-scale, 1)); | |
| transform-origin: center center; | |
| } | |
| .top-banner { | |
| height: 142px; | |
| grid-template-columns: 286px minmax(0, 1fr) 172px 94px; | |
| } | |
| .table-grid { | |
| height: auto; | |
| min-height: 0; | |
| grid-template-columns: 286px minmax(0, 1fr) 334px; | |
| } | |
| .left-rail { | |
| grid-template-rows: minmax(0, 1fr) 92px 62px 46px 42px; | |
| } | |
| .right-rail { | |
| grid-column: auto; | |
| min-width: 0; | |
| grid-template-columns: 1fr; | |
| grid-template-rows: minmax(0, 0.92fr) minmax(0, 1fr); | |
| } | |
| .center-stage { | |
| grid-template-rows: 130px minmax(0, 1fr); | |
| } | |
| .tactic-tray { | |
| grid-template-columns: repeat(5, minmax(0, 1fr)); | |
| } | |
| .map-shell { | |
| grid-template-rows: 38px minmax(0, 1fr) 62px; | |
| } | |
| .legend-strip { | |
| grid-template-columns: repeat(7, minmax(0, 1fr)); | |
| } | |
| .case-control-row { display: grid; grid-template-columns: 1fr 1fr; gap: 6px; } | |
| .case-control-row button { color: #ffe8a7; font-weight: 900; background: #63251c; border: 2px solid #c28a35; } | |
| #notesText { min-height: 210px; resize: none; } | |
| #notesStatus { margin: 6px 0 0; opacity: 0.76; } | |
| .notice-dialog, .witness-dialog, .story-dialog { padding: 0; color: var(--ink); background: transparent; border: 0; } | |
| .notice-dialog::backdrop, .witness-dialog::backdrop, .story-dialog::backdrop { background: rgba(3, 14, 15, 0.9); backdrop-filter: blur(5px); } | |
| .notice-panel { width: min(720px, 92vw); display: grid; gap: 16px; padding: 22px; background: #f3dda6; border: 5px solid #b47b25; box-shadow: 0 24px 80px #000; } | |
| .notice-panel header, .witness-interview-shell > header, .story-reveal-shell > header { display: flex; align-items: center; justify-content: space-between; gap: 16px; } | |
| .notice-panel h2, .witness-interview-shell h2, .story-reveal-shell h2 { margin: 0; color: #8b2217; text-transform: uppercase; } | |
| .notice-panel textarea { min-height: 220px; padding: 16px; color: #251304; background: #fff0bc; border: 2px solid #9a6825; resize: vertical; } | |
| .dialog-actions, .speech-controls, .text-chat-row { display: flex; gap: 10px; } | |
| .dialog-actions button, .witness-interview-shell button, .story-reveal-shell button { min-height: 40px; padding: 8px 14px; color: #fff0bc; font-weight: 900; background: #0c5552; border: 2px solid #c18a34; } | |
| .witness-dialog, .story-dialog { width: 100vw; max-width: none; height: 100vh; max-height: none; } | |
| .witness-interview-shell, .story-reveal-shell { width: 100%; height: 100%; display: grid; grid-template-rows: auto auto minmax(0, 1fr) auto; gap: 14px; padding: clamp(18px, 3vw, 48px); color: #f8e7b3; background: radial-gradient(circle at 20% 10%, rgba(211, 159, 55, 0.16), transparent 34%), linear-gradient(145deg, #052d30, #171006 70%); border: 8px solid #9f6d22; } | |
| .witness-interview-shell h2, .story-reveal-shell h2 { color: #ffd46f; font-size: clamp(2rem, 4vw, 4rem); } | |
| .witness-interview-shell header p, .witness-interview-shell header small, .story-reveal-shell header small { margin: 4px 0; color: #e8c978; } | |
| .witness-summary { padding: 14px 18px; color: #2a160b; background: #eed69b; border-left: 6px solid #9e2c20; } | |
| .witness-transcript, .story-timeline { min-height: 0; overflow: auto; padding: 18px; background: rgba(0, 0, 0, 0.27); border: 2px solid #8c672d; } | |
| .chat-message { width: min(76%, 820px); margin: 10px 0; padding: 12px 14px; border-radius: 8px; line-height: 1.45; } | |
| .chat-message.user { margin-left: auto; color: #f9ebbd; background: #175e65; } | |
| .chat-message.witness { color: #2b1709; background: #eed69b; } | |
| .witness-interview-shell footer { display: grid; gap: 10px; } | |
| .speech-controls { align-items: center; flex-wrap: wrap; } | |
| #pushToTalkButton.recording, #autoSpeechButton.active { background: #9b2a20; box-shadow: 0 0 20px rgba(255, 85, 62, 0.6); } | |
| #micLevel { width: 180px; } | |
| .text-chat-row textarea { min-height: 58px; flex: 1; padding: 10px; color: #241307; background: #fff0bc; resize: none; } | |
| .story-reveal-shell { grid-template-rows: auto minmax(0, 1fr) auto; } | |
| .story-card { margin: 0 0 16px; padding: 18px; color: #28170a; background: #efd99f; border-left: 7px solid #9b2a20; } | |
| .story-card h3 { margin: 0 0 8px; color: #7f2219; } | |
| .story-facts { margin: 10px 0 0; color: #4c3318; } | |
| .case-intro-dialog { width: 100vw; max-width: none; height: 100vh; max-height: none; padding: 0; color: #f7e7b5; background: transparent; border: 0; } | |
| .case-intro-dialog::backdrop { background: rgba(1, 8, 10, 0.94); backdrop-filter: blur(7px); } | |
| .case-intro-shell { box-sizing: border-box; width: 100%; height: 100%; display: grid; grid-template-rows: auto 1fr auto; gap: clamp(18px, 3vh, 34px); padding: clamp(24px, 4vw, 64px); overflow: auto; background: radial-gradient(circle at 82% 12%, rgba(183, 44, 29, 0.2), transparent 30%), radial-gradient(circle at 12% 80%, rgba(199, 151, 51, 0.15), transparent 34%), #071f21; border: 10px solid #9a6926; box-shadow: inset 0 0 90px #000; } | |
| .case-intro-heading { display: flex; align-items: center; justify-content: space-between; gap: 24px; border-bottom: 1px solid rgba(232, 195, 104, 0.4); padding-bottom: 18px; } | |
| .case-intro-heading small, .intro-card > small { color: #d9ae50; font-weight: 900; letter-spacing: 0.18em; text-transform: uppercase; } | |
| .case-intro-heading h2 { margin: 5px 0 0; color: #ffe39a; font-size: clamp(2.4rem, 5vw, 5.2rem); line-height: 0.92; text-transform: uppercase; text-shadow: 4px 5px 0 #3f1710; } | |
| .case-intro-heading p { max-width: 760px; margin: 12px 0 0; color: #d8c38f; font-size: 1.08rem; } | |
| .case-stamp { padding: 12px 18px; color: #d4513e; font: 900 1.15rem Georgia, serif; letter-spacing: 0.14em; text-transform: uppercase; border: 4px double #b43a2b; transform: rotate(5deg); } | |
| .case-intro-cards { display: grid; grid-template-columns: 1.25fr 0.8fr 1.15fr; gap: clamp(14px, 2vw, 28px); align-items: stretch; } | |
| .intro-card { position: relative; min-height: 430px; padding: clamp(22px, 2.5vw, 38px); color: #281707; overflow: hidden; background: linear-gradient(145deg, #f5e3ac, #d8b96f); border: 1px solid #fff0be; box-shadow: 0 22px 50px rgba(0,0,0,0.5), inset 0 0 35px rgba(91,45,12,0.18); transform: rotate(-0.7deg); } | |
| .intro-card:nth-child(2) { transform: translateY(10px) rotate(0.8deg); } | |
| .intro-card:nth-child(3) { transform: rotate(-0.3deg); } | |
| .intro-card:after { content: ""; position: absolute; inset: 10px; pointer-events: none; border: 1px solid rgba(107, 58, 17, 0.35); } | |
| .intro-card-number { position: absolute; top: 10px; right: 20px; color: rgba(116, 57, 16, 0.16); font: 900 5rem Georgia, serif; } | |
| .intro-card h3 { position: relative; margin: 14px 0; color: #7f2118; font: 900 clamp(1.55rem, 2.4vw, 2.7rem) Georgia, serif; line-height: 1; text-transform: uppercase; } | |
| .intro-card p { position: relative; line-height: 1.55; } | |
| .crime-card dl { position: relative; display: grid; grid-template-columns: 72px 1fr; gap: 8px 12px; margin-top: 24px; padding-top: 18px; border-top: 2px solid rgba(112, 62, 19, 0.35); } | |
| .crime-card dt { color: #8d271b; font-weight: 900; text-transform: uppercase; } | |
| .crime-card dd { margin: 0; font-weight: 700; } | |
| .suspect-card { text-align: center; background: linear-gradient(160deg, #d9c17b, #ae8946); } | |
| .suspect-card img { position: relative; width: min(90%, 230px); height: 245px; margin: 14px auto 4px; object-fit: cover; filter: sepia(0.8) contrast(1.2); border: 7px solid #f2dda0; box-shadow: 0 5px 15px rgba(48, 25, 5, 0.45); } | |
| .suspect-card p { padding: 12px; color: #f8e8b7; background: #4e2615; } | |
| .sightings-card ol { position: relative; display: grid; gap: 10px; margin: 18px 0 0; padding: 0; list-style: none; } | |
| .sightings-card li { display: grid; grid-template-columns: 40px 1fr; gap: 12px; padding: 12px; background: rgba(255,247,211,0.45); border-left: 5px solid #856632; } | |
| .sightings-card li.sighting-confirmed { background: rgba(153, 39, 26, 0.12); border-color: #9a2a1d; } | |
| .sightings-card li > span { color: #9a2a1d; font: 900 1.35rem Georgia, serif; } | |
| .sightings-card li small, .sightings-card li strong { display: block; } | |
| .sightings-card li small { color: #75521e; font-weight: 900; text-transform: uppercase; } | |
| .sightings-card li strong { margin: 2px 0 4px; font-size: 1.08rem; } | |
| .sightings-card li p { margin: 0; font-size: 0.9rem; line-height: 1.35; } | |
| .case-intro-shell footer { display: flex; align-items: center; justify-content: space-between; gap: 20px; color: #d7bd79; } | |
| .case-intro-shell footer button { min-width: 240px; padding: 15px 24px; color: #fff1bd; font-weight: 900; letter-spacing: 0.08em; text-transform: uppercase; background: linear-gradient(#a73a29, #702116); border: 3px solid #d7a64d; box-shadow: 0 8px 0 #32100c; } | |
| .case-intro-shell footer button:hover { transform: translateY(-2px); box-shadow: 0 10px 0 #32100c; } | |
| @media (max-width: 1000px) { | |
| .case-intro-cards { grid-template-columns: 1fr; } | |
| .intro-card { min-height: 0; transform: none ; } | |
| .case-intro-heading { align-items: flex-start; } | |
| } | |
| /* How-to-play tutorial -------------------------------------------------- */ | |
| .help-button { font: 900 1.5rem Georgia, serif; } | |
| .tutorial-dialog { width: 100vw; max-width: none; height: 100vh; max-height: none; padding: 0; color: #f7e7b5; background: transparent; border: 0; } | |
| .tutorial-dialog::backdrop { background: rgba(1, 8, 10, 0.95); backdrop-filter: blur(7px); } | |
| .tutorial-shell { box-sizing: border-box; width: 100%; height: 100%; display: grid; grid-template-rows: auto 1fr auto; gap: clamp(16px, 2.6vh, 30px); padding: clamp(22px, 3.4vw, 56px); overflow: auto; background: radial-gradient(circle at 82% 12%, rgba(183, 44, 29, 0.18), transparent 30%), radial-gradient(circle at 12% 80%, rgba(199, 151, 51, 0.14), transparent 34%), #071f21; border: 10px solid #9a6926; box-shadow: inset 0 0 90px #000; } | |
| .tutorial-head { display: flex; align-items: center; justify-content: space-between; gap: 24px; border-bottom: 1px solid rgba(232, 195, 104, 0.4); padding-bottom: 14px; } | |
| .tutorial-head small { color: #d9ae50; font-weight: 900; letter-spacing: 0.18em; text-transform: uppercase; } | |
| .tutorial-head h2 { margin: 5px 0 0; color: #ffe39a; font-size: clamp(1.9rem, 3.6vw, 3.4rem); line-height: 0.95; text-transform: uppercase; text-shadow: 3px 4px 0 #3f1710; } | |
| .tutorial-skip { padding: 10px 18px; color: #e7cd8a; font-weight: 900; letter-spacing: 0.06em; text-transform: uppercase; background: transparent; border: 2px solid rgba(215, 166, 77, 0.6); border-radius: 4px; cursor: pointer; } | |
| .tutorial-skip:hover { color: #fff1bd; border-color: #d7a64d; } | |
| .tutorial-body { display: grid; grid-template-columns: 1.55fr 1fr; gap: clamp(18px, 2.5vw, 40px); align-items: center; min-height: 0; } | |
| .tutorial-figure { margin: 0; padding: 12px; background: linear-gradient(145deg, #16322f, #0a2422); border: 4px solid #9a6926; box-shadow: 0 22px 50px rgba(0,0,0,0.55); } | |
| .tutorial-figure img { display: block; width: 100%; height: auto; max-height: 64vh; object-fit: contain; border: 1px solid rgba(0,0,0,0.5); } | |
| .tutorial-copy { display: grid; gap: 14px; align-content: center; } | |
| .tutorial-tag { justify-self: start; padding: 6px 14px; color: #1c1305; font: 900 0.82rem Georgia, serif; letter-spacing: 0.14em; text-transform: uppercase; background: linear-gradient(#f5e3ac, #d8b96f); border: 2px solid #fff0be; } | |
| .tutorial-copy h3 { margin: 0; color: #ffe39a; font: 900 clamp(1.6rem, 2.6vw, 2.8rem) Georgia, serif; line-height: 1.02; text-transform: uppercase; } | |
| .tutorial-text { display: grid; gap: 12px; margin: 0; padding: 0; list-style: none; } | |
| .tutorial-text li { position: relative; padding-left: 26px; color: #e8d5a0; font-size: clamp(0.98rem, 1.2vw, 1.18rem); line-height: 1.45; } | |
| .tutorial-text li::before { content: ""; position: absolute; left: 4px; top: 0.55em; width: 9px; height: 9px; background: #d4513e; transform: rotate(45deg); box-shadow: 0 0 0 2px rgba(215, 166, 77, 0.5); } | |
| .tutorial-text li strong { color: #ffe39a; } | |
| .tutorial-foot { display: flex; align-items: center; justify-content: space-between; gap: 20px; border-top: 1px solid rgba(232, 195, 104, 0.4); padding-top: 14px; } | |
| .tutorial-dots { display: flex; gap: 10px; } | |
| .tutorial-dots button { width: 13px; height: 13px; padding: 0; background: rgba(215, 166, 77, 0.3); border: 2px solid #8a6427; border-radius: 50%; cursor: pointer; } | |
| .tutorial-dots button.active { background: #d4513e; border-color: #f0c267; } | |
| .tutorial-nav { display: flex; align-items: center; gap: 14px; } | |
| .tutorial-counter { color: #c9ad6c; font-weight: 800; letter-spacing: 0.08em; } | |
| .tutorial-nav button { min-width: 130px; padding: 13px 22px; color: #fff1bd; font-weight: 900; letter-spacing: 0.08em; text-transform: uppercase; background: linear-gradient(#23423d, #15302d); border: 3px solid #d7a64d; box-shadow: 0 6px 0 #0a1c1a; cursor: pointer; } | |
| .tutorial-nav button.tutorial-primary { background: linear-gradient(#a73a29, #702116); box-shadow: 0 6px 0 #32100c; } | |
| .tutorial-nav button:hover { transform: translateY(-2px); } | |
| .tutorial-nav button:disabled { opacity: 0.4; cursor: default; transform: none; } | |
| @media (max-width: 1000px) { | |
| .tutorial-body { grid-template-columns: 1fr; } | |
| .tutorial-figure img { max-height: 40vh; } | |
| } | |
| @media (max-height: 800px) and (min-width: 1001px) { | |
| .case-intro-shell { gap: 14px; padding: 22px 42px; } | |
| .case-intro-heading { padding-bottom: 10px; } | |
| .case-intro-heading h2 { font-size: 3rem; } | |
| .case-intro-heading p { margin-top: 7px; } | |
| .intro-card { min-height: 360px; padding: 20px 25px; } | |
| .intro-card h3 { font-size: 1.7rem; } | |
| .suspect-card img { width: 180px; height: 195px; margin-top: 8px; } | |
| .sightings-card ol { gap: 7px; margin-top: 10px; } | |
| .sightings-card li { padding: 8px 10px; } | |
| .sightings-card li p { font-size: 0.8rem; } | |
| .case-intro-shell footer button { padding: 11px 20px; } | |
| } | |