/* ============================================================ ДЕЛО № 260826 — визуальный слой v2 Бюрократический нуар: тёмный терминал + бумажные документы. ============================================================ */ :root { --bg: #0d1117; --bg-2: #131a22; --line: #232c37; --line-2: #2e3946; --paper: #efe4cd; --paper-2: #f6eeda; --paper-3: #e5d8bd; --ink: #23201a; --ink-2: #5c5344; --ink-3: #8a7f6a; --red: #b03a3a; --red-soft: #d8a3a3; --amber: #d7a44a; --green: #4a7d55; --dim: #7d8896; --mono: "JetBrains Mono", "IBM Plex Mono", ui-monospace, "Courier New", monospace; --serif: "PT Serif", "Source Serif 4", Georgia, serif; --sans: "Inter", "Manrope", "Segoe UI", system-ui, sans-serif; --r: 4px; --shadow: 0 18px 50px rgba(0,0,0,.45); } * { box-sizing: border-box; } html { -webkit-text-size-adjust: 100%; } body { margin: 0; background: var(--bg); color: #ccd4dd; font-family: var(--sans); font-size: 15px; line-height: 1.6; min-height: 100vh; background-image: radial-gradient(1200px 600px at 20% -5%, rgba(215,164,74,.055), transparent 60%), radial-gradient(900px 500px at 85% 105%, rgba(176,58,58,.05), transparent 60%); transition: background-color .9s ease; } body.warm { background-color: #241b13; background-image: radial-gradient(1000px 520px at 50% -10%, rgba(215,164,74,.16), transparent 62%), radial-gradient(760px 460px at 15% 110%, rgba(215,164,74,.09), transparent 60%); } .shell { min-height: 100vh; display: flex; flex-direction: column; } /* ---------------- верхняя панель ---------------- */ .topbar { position: sticky; top: 0; z-index: 20; display: flex; justify-content: space-between; align-items: center; gap: 12px; flex-wrap: wrap; padding: 11px 20px; background: rgba(13,17,23,.92); backdrop-filter: blur(8px); border-bottom: 1px solid var(--line); font-family: var(--mono); font-size: 12.5px; } .tb-left { display: flex; align-items: baseline; gap: 14px; min-width: 0; } .tb-logo { color: var(--amber); letter-spacing: .06em; white-space: nowrap; } .tb-case { color: var(--dim); white-space: nowrap; } .tb-right { display: flex; gap: 7px; } .chip { display: inline-flex; align-items: center; gap: 6px; background: #19212b; color: #c4ced9; border: 1px solid var(--line-2); border-radius: var(--r); padding: 6px 11px; font: inherit; cursor: pointer; transition: border-color .15s, color .15s, transform .08s; } .chip:hover:not(:disabled) { border-color: var(--amber); color: #e6ecf2; } .chip:active:not(:disabled) { transform: translateY(1px); } .chip:disabled { opacity: .32; cursor: default; } .chip-n { background: var(--amber); color: #1a1409; border-radius: 20px; padding: 0 6px; font-size: 11px; font-weight: 700; line-height: 17px; } .chip-i { padding: 6px 9px; } /* ---------------- прогресс ---------------- */ .rail { display: flex; gap: 2px; overflow-x: auto; padding: 10px 20px 0; scrollbar-width: none; } .rail::-webkit-scrollbar { display: none; } .rail-step { display: flex; align-items: center; gap: 7px; padding: 5px 13px 5px 7px; border-bottom: 2px solid var(--line); color: #55606d; font-family: var(--mono); font-size: 11px; white-space: nowrap; flex: none; transition: color .2s, border-color .2s; } .rail-dot { width: 18px; height: 18px; border-radius: 50%; display: grid; place-items: center; background: #19212b; border: 1px solid var(--line-2); font-size: 10px; line-height: 1; } .rail-step.done { color: #7f8b98; border-bottom-color: var(--green); } .rail-step.done .rail-dot { background: var(--green); border-color: var(--green); color: #eaf3ec; } .rail-step.cur { color: var(--amber); border-bottom-color: var(--amber); } .rail-step.cur .rail-dot { border-color: var(--amber); color: var(--amber); } /* ---------------- лист документа ---------------- */ .stage { flex: 1; display: flex; justify-content: center; align-items: flex-start; padding: 26px 16px 40px; animation: rise .38s cubic-bezier(.2,.7,.3,1); } @keyframes rise { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: none; } } .center-wrap { width: 100%; display: flex; justify-content: center; } .sheet { position: relative; width: 100%; max-width: 680px; background: var(--paper); background-image: repeating-linear-gradient(0deg, rgba(0,0,0,.012) 0 1px, transparent 1px 3px), radial-gradient(600px 400px at 15% 0%, rgba(255,255,255,.5), transparent 65%); color: var(--ink); font-family: var(--serif); padding: 30px 34px 32px; border-radius: var(--r); box-shadow: var(--shadow); } .sheet::before { content: ""; position: absolute; inset: 0; border-radius: var(--r); box-shadow: inset 0 0 0 1px rgba(120,100,60,.22); pointer-events: none; } .sheet p { margin: 0 0 11px; } .vspace { height: 9px; } .sheet-head { margin-bottom: 18px; } .chapter { font-family: var(--mono); font-size: 11px; letter-spacing: .14em; text-transform: uppercase; color: var(--ink-3); } .chapter.red { color: var(--red); } .sheet h1, .sheet h2 { font-family: var(--sans); color: #1b1812; letter-spacing: -.01em; margin: 4px 0 0; } .sheet h1 { font-size: 25px; line-height: 1.25; } .sheet h2 { font-size: 19px; } .intro h1 { margin-bottom: 14px; } .note { font-family: var(--mono); font-size: 11.5px; color: var(--ink-3); margin-top: 14px; } .dim { color: var(--ink-3); } .quote { font-style: italic; color: var(--ink-2); border-left: 2px solid var(--amber); padding-left: 13px; margin: 15px 0 0; } .center-t { text-align: center; } /* ---------------- кнопки ---------------- */ .row { display: flex; gap: 10px; flex-wrap: wrap; margin-top: 20px; } .row.center { justify-content: center; } .btn { font-family: var(--sans); font-weight: 600; font-size: 14px; padding: 11px 21px; border: 0; border-radius: var(--r); cursor: pointer; transition: filter .15s, transform .07s, box-shadow .15s; } .btn:active { transform: translateY(1px); } .btn.primary { background: var(--red); color: #fbf1e6; box-shadow: 0 2px 0 rgba(0,0,0,.18); } .btn.primary:hover { filter: brightness(1.09); } .btn.ghost { background: transparent; color: var(--ink); box-shadow: inset 0 0 0 1px rgba(120,100,60,.5); } .btn.ghost:hover { box-shadow: inset 0 0 0 1px var(--ink-2); } .linkbtn { display: block; margin-top: 14px; padding: 0; background: none; border: 0; color: var(--ink-3); font-family: var(--mono); font-size: 11.5px; text-decoration: underline; cursor: pointer; } .linkbtn:hover { color: var(--red); } /* ---------------- поля ввода ---------------- */ .inrow { display: flex; gap: 9px; flex-wrap: wrap; margin: 18px 0 4px; } .inrow input { flex: 1 1 200px; min-width: 0; padding: 11px 13px; border: 1px solid rgba(120,100,60,.45); border-radius: var(--r); background: var(--paper-2); color: var(--ink); font-family: var(--mono); font-size: 14px; } .inrow input:focus { outline: 2px solid var(--amber); outline-offset: -1px; } .inrow input:disabled { opacity: .65; } /* ---------------- обратная связь ---------------- */ .feedback { display: flex; gap: 8px; align-items: flex-start; font-family: var(--mono); font-size: 12.5px; line-height: 1.5; min-height: 18px; margin-top: 8px; } .feedback:empty { margin: 0; } .fb-mark { flex: none; width: 3px; align-self: stretch; border-radius: 2px; } .feedback.bad { color: var(--red); } .feedback.bad .fb-mark { background: var(--red); } .feedback.good { color: var(--green); } .feedback.good .fb-mark { background: var(--green); } .shake { animation: shake .32s; } @keyframes shake { 0%,100% { transform: translateX(0); } 25% { transform: translateX(-4px); } 75% { transform: translateX(4px); } } /* ---------------- служебные вставки ---------------- */ .excerpt, .memo { background: var(--paper-3); border-left: 3px solid var(--amber); padding: 13px 16px; margin: 16px 0; border-radius: 0 var(--r) var(--r) 0; } .excerpt-h, .memo-h { font-family: var(--mono); font-size: 10.5px; letter-spacing: .12em; text-transform: uppercase; color: var(--ink-3); margin-bottom: 6px; } .excerpt p, .memo p { margin: 0; font-size: 14px; } .memo p { font-style: italic; } .record { background: var(--paper-2); border: 1px solid rgba(120,100,60,.3); border-radius: var(--r); padding: 13px 16px; margin: 16px 0; } .record-h { font-family: var(--mono); font-size: 10.5px; letter-spacing: .12em; text-transform: uppercase; color: var(--ink-3); margin-bottom: 9px; padding-bottom: 7px; border-bottom: 1px solid rgba(120,100,60,.22); } .rec-row, .inv-row { display: flex; justify-content: space-between; gap: 14px; padding: 5px 0; font-size: 14px; border-bottom: 1px dotted rgba(120,100,60,.24); } .rec-row:last-child, .inv-row:last-child { border-bottom: 0; } .rec-row span { color: var(--ink-2); } .rec-row b { text-align: right; font-family: var(--mono); font-size: 13px; } .inv-row { font-family: var(--mono); font-size: 12.5px; justify-content: flex-start; } .inv-n { color: var(--red); flex: none; width: 82px; } .record-note { font-family: var(--mono); font-size: 11px; color: var(--ink-3); font-style: italic; margin-top: 8px; } /* журнал турникета */ .log-grid { display: flex; flex-direction: column; } .log-row { display: grid; grid-template-columns: 62px 1fr 74px; gap: 10px; align-items: center; padding: 6px 0; font-family: var(--mono); font-size: 13px; border-bottom: 1px dotted rgba(120,100,60,.24); } .log-row:last-child { border-bottom: 0; } .log-t { color: var(--ink); font-weight: 700; } .log-n { color: var(--ink-2); } .log-d { justify-self: end; font-size: 11px; padding: 2px 8px; border-radius: 20px; letter-spacing: .04em; } .log-d.in { background: rgba(74,125,85,.16); color: var(--green); } .log-d.out { background: rgba(176,58,58,.13); color: var(--red); } /* ---------------- две колонки (опись + стол) ---------------- */ /* Глава с описью шире прочих: бирки на столе должны читаться без усилий. */ .sheet.wide { max-width: 940px; } .two-col { display: grid; grid-template-columns: 264px minmax(0, 1fr); gap: 18px; align-items: start; margin: 16px 0; } .two-col .record { margin: 0; } .scene-box { border: 1px solid rgba(120,100,60,.35); border-radius: var(--r); overflow: hidden; overflow-x: auto; background: #43331f; -webkit-overflow-scrolling: touch; } .desk { width: 100%; display: block; } .desk .hit { cursor: pointer; } .desk .hit > *:not(.tag) { transition: filter .15s; } .desk .hit:hover > *:not(.tag) { filter: brightness(1.14); } .desk .tag rect { fill: #f2e7cf; stroke: #8a7550; stroke-width: .8; } .desk .tag text { fill: #3a3125; font-family: var(--mono); font-size: 9.5px; font-weight: 700; } .desk .hit:hover .tag rect { fill: #fff8e6; stroke: var(--amber); } .desk .lbl { fill: #3a3125; font-family: var(--mono); font-size: 12px; } .desk .lbl-s { fill: #3a3125; font-family: var(--mono); font-size: 10.5px; } .desk .lbl-xs { fill: #6b5c44; font-family: var(--mono); font-size: 8.5px; } .desk .num { fill: #23201a; font-family: var(--sans); font-size: 27px; font-weight: 700; } .desk .found .tag rect { fill: var(--amber); stroke: #8a6a20; } .pulse { animation: pulse 1.05s ease-in-out infinite; } @keyframes pulse { 0%,100% { filter: none; } 50% { filter: drop-shadow(0 0 9px var(--amber)) brightness(1.15); } } /* ---------------- карточки-варианты ---------------- */ .cards, .docs { display: grid; gap: 10px; margin: 16px 0; } .pcard, .doc { display: block; width: 100%; text-align: left; background: var(--paper-2); border: 1px solid rgba(120,100,60,.32); border-left: 3px solid rgba(120,100,60,.32); border-radius: var(--r); padding: 13px 15px; font-family: var(--serif); font-size: 14px; color: var(--ink); cursor: pointer; transition: border-color .16s, background .16s, transform .1s, box-shadow .16s; } .pcard:hover:not(:disabled), .doc:hover:not(:disabled) { border-left-color: var(--red); background: #f8f1de; transform: translateX(2px); box-shadow: 0 3px 12px rgba(0,0,0,.07); } .pcard:disabled, .doc:disabled { cursor: default; opacity: .62; } .pcard.found, .doc.found { opacity: 1; border-left-color: var(--green); background: #f1f5ea; } .pcard-top { display: flex; align-items: baseline; gap: 9px; flex-wrap: wrap; margin-bottom: 6px; } .pcard-name { font-family: var(--sans); font-weight: 700; font-size: 14.5px; } .pcard-role { font-family: var(--mono); font-size: 10.5px; color: var(--ink-3); } .pcard-text { color: var(--ink-2); } .doc-h { display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap; margin-bottom: 7px; } .doc-n { font-family: var(--mono); font-size: 10.5px; color: var(--red); letter-spacing: .08em; } .doc-title { font-family: var(--sans); font-weight: 600; font-size: 13.5px; } .doc-t { margin-bottom: 8px; } .doc-sign { font-family: var(--mono); font-size: 10.5px; color: var(--ink-3); text-align: right; font-style: italic; } /* ---------------- успех ---------------- */ .success { background: linear-gradient(180deg, rgba(74,125,85,.11), rgba(74,125,85,.05)); border: 1px solid rgba(74,125,85,.34); border-radius: var(--r); padding: 15px 17px; margin-top: 18px; animation: rise .35s; } .success-head { display: flex; align-items: center; gap: 9px; font-family: var(--sans); font-weight: 700; font-size: 15px; color: #2f5b39; margin-bottom: 7px; } .tick { flex: none; width: 20px; height: 20px; border-radius: 50%; background: var(--green); color: #fff; display: grid; place-items: center; font-size: 12px; } .success p { margin: 0; color: var(--ink-2); font-size: 14px; } /* ---------------- карточка факта ---------------- */ .jcard { background: var(--paper-2); border: 1px dashed rgba(120,100,60,.45); border-radius: var(--r); padding: 11px 14px; margin-bottom: 10px; } .jcard.inline { margin: 13px 0 0; background: rgba(255,255,255,.5); } .jcard-name { font-family: var(--sans); font-weight: 700; font-size: 13px; letter-spacing: .06em; color: var(--red); margin-bottom: 6px; } .jcard-fact { display: flex; justify-content: space-between; align-items: baseline; gap: 12px; flex-wrap: wrap; padding: 7px 10px; border-radius: 3px; background: rgba(215,164,74,.16); } .jcard-label { font-family: var(--sans); font-size: 11.5px; color: var(--ink-2); } .jcard-fact b { font-family: var(--mono); font-size: 15px; color: var(--ink); letter-spacing: .04em; } .jcard-desc { font-size: 12.5px; color: var(--ink-3); margin-top: 7px; } /* ---------------- песня ---------------- */ .song { background: var(--paper-2); border: 1px solid rgba(120,100,60,.3); border-radius: var(--r); padding: 16px 18px; margin: 16px 0; } .song-t { font-family: var(--sans); font-weight: 700; font-size: 16px; } .song-a { font-family: var(--mono); font-size: 10.5px; color: var(--ink-3); margin-top: 2px; } .song audio { width: 100%; margin: 12px 0 6px; } .song-fb { font-family: var(--mono); font-size: 11.5px; color: var(--ink-3); } .lyrics { display: grid; gap: 14px; margin-top: 12px; } .lblock p { margin: 1px 0; font-size: 13.5px; color: var(--ink-2); } .lblock-h { font-family: var(--mono); font-size: 10px; letter-spacing: .12em; text-transform: uppercase; color: var(--ink-3); margin-bottom: 4px; } .badge { background: var(--red); color: #fdf3e8; border-radius: 20px; padding: 1px 8px; font-size: 9px; letter-spacing: .06em; margin-left: 4px; } .lblock.chorus p { font-style: italic; color: var(--ink-3); } .lblock.bridge { background: rgba(215,164,74,.13); border-left: 3px solid var(--amber); padding: 10px 13px; margin-left: -4px; border-radius: 0 var(--r) var(--r) 0; } .lblock.bridge p { color: var(--ink); font-weight: 600; } .acro { color: var(--red); font-weight: 800; font-size: 1.14em; border-bottom: 2px solid rgba(176,58,58,.32); } /* ---------------- ложный след ---------------- */ .alert { background: linear-gradient(180deg, rgba(176,58,58,.12), rgba(176,58,58,.05)); border: 1px solid rgba(176,58,58,.42); border-radius: var(--r); padding: 13px 16px; margin-bottom: 15px; } .alert p { margin: 0 0 4px; font-size: 14px; } .alert p:last-child { margin: 0; } .report { position: relative; background: var(--paper-2); border: 1px solid rgba(120,100,60,.34); border-radius: var(--r); padding: 17px 19px 22px; margin: 15px 0; } .report-h { font-family: var(--sans); font-weight: 700; font-size: 15px; letter-spacing: .04em; margin-bottom: 10px; padding-bottom: 8px; border-bottom: 1px solid rgba(120,100,60,.22); } .report-body { font-size: 14.5px; line-height: 1.85; margin: 0; } .report-seal { position: absolute; right: 16px; bottom: 10px; font-family: var(--mono); font-size: 9.5px; color: var(--red-soft); border: 1px solid var(--red-soft); border-radius: 3px; padding: 2px 7px; transform: rotate(-6deg); opacity: .8; } /* Искомые фрагменты НЕ отличаются от обычного текста: найти их — и есть загадка. Кликается весь рапорт, «подозрительность» игрок определяет сам, сверяя с журналом и памяткой. */ .plain { cursor: pointer; border-radius: 2px; transition: background .14s; } .plain:hover { background: rgba(120,100,60,.11); } .tell { font: inherit; color: inherit; background: none; border: 0; padding: 0; border-radius: 2px; cursor: pointer; transition: background .14s, color .14s; } .tell:hover:not(:disabled) { background: rgba(120,100,60,.11); } .tell.got { background: rgba(74,125,85,.2); color: #2f5b39; box-shadow: inset 0 -1.5px 0 var(--green); font-weight: 700; padding: 1px 3px; cursor: default; } .task { display: flex; justify-content: space-between; align-items: center; gap: 14px; flex-wrap: wrap; background: var(--paper-3); border-radius: var(--r); padding: 11px 15px; margin-top: 4px; } .task p { margin: 0; font-size: 13.5px; } .counter { font-family: var(--mono); font-size: 12.5px; color: var(--ink-2); white-space: nowrap; } .counter b { color: var(--red); font-size: 15px; } /* ---------------- форма ордера ---------------- */ .form { display: grid; gap: 17px; margin: 20px 0 4px; } .fgroup label { display: block; font-family: var(--sans); font-weight: 600; font-size: 13.5px; color: var(--ink); margin-bottom: 6px; } .fline { display: flex; align-items: center; gap: 9px; } .fline input { flex: 1; min-width: 0; padding: 10px 13px; border: 1px solid rgba(120,100,60,.45); border-radius: var(--r); background: var(--paper-2); color: var(--ink); font-family: var(--mono); font-size: 14px; } .fline input:focus { outline: 2px solid var(--amber); outline-offset: -1px; } .fmark { flex: none; width: 22px; text-align: center; color: var(--green); font-size: 17px; font-weight: 700; } .fsrc { font-family: var(--mono); font-size: 10.5px; color: var(--ink-3); margin-top: 5px; } .ferr { font-family: var(--mono); font-size: 11.5px; color: var(--red); margin-top: 5px; } .ferr:empty { margin: 0; } .fgroup.ok label { color: var(--green); } .fgroup.ok .fline input { background: rgba(74,125,85,.09); border-color: rgba(74,125,85,.5); } /* ---------------- финал ---------------- */ .twist { width: 100%; max-width: 620px; margin: 70px auto 0; text-align: center; } .twist-lines { min-height: 150px; } .twist-lines p { font-family: var(--mono); font-size: 16.5px; line-height: 1.6; color: #e8ded0; margin: 12px 0; opacity: 0; animation: fade .85s forwards; } @keyframes fade { to { opacity: 1; } } .bigstamp { display: inline-block; margin-top: 26px; border: 3px solid var(--red); color: var(--red); font-family: var(--mono); font-weight: 700; font-size: 17px; letter-spacing: .1em; padding: 11px 22px; transform: rotate(-4deg); animation: slam .38s cubic-bezier(.2,1.4,.4,1); } @keyframes slam { from { transform: rotate(-4deg) scale(2.1); opacity: 0; } to { transform: rotate(-4deg) scale(1); opacity: 1; } } .warm-sheet { background: #fbf4e6; background-image: radial-gradient(700px 400px at 20% 0%, rgba(255,255,255,.7), transparent 60%); max-width: 620px; } .warm-sheet h1 { text-align: center; font-size: 22px; margin-bottom: 18px; } .warm-sheet p { line-height: 1.72; } .order-final .record { background: rgba(255,255,255,.55); } .qr { width: 232px; margin: 18px auto; background: #fff; padding: 8px; border-radius: var(--r); box-shadow: 0 3px 14px rgba(0,0,0,.12); } .qr svg { width: 100%; height: auto; display: block; } .pickup .rec-row b { font-size: 14px; } /* Блок «как получить штрихкод» — последний шаг вне системы */ .claim { background: rgba(215,164,74,.16); border: 1px solid rgba(215,164,74,.5); border-radius: var(--r); padding: 15px 18px; margin: 16px 0 4px; text-align: left; } .claim-h { font-family: var(--mono); font-size: 10.5px; letter-spacing: .12em; text-transform: uppercase; color: #8a6a20; margin-bottom: 7px; } .claim-lead { font-size: 13.5px; color: var(--ink-2); margin: 0 0 10px; } .claim-steps { margin: 0; padding-left: 20px; display: grid; gap: 6px; } .claim-steps li { font-size: 14.5px; line-height: 1.5; } .claim-steps li::marker { color: var(--red); font-weight: 700; } .claim-note { font-family: var(--mono); font-size: 11.5px; color: var(--ink-3); font-style: italic; margin: 14px 0 0; padding-top: 11px; border-top: 1px dotted rgba(120,100,60,.35); } /* ---------------- док и футер ---------------- */ .dock { display: flex; gap: 7px; justify-content: center; flex-wrap: wrap; padding: 6px 16px 0; opacity: .42; transition: opacity .2s; } .dock:hover { opacity: 1; } .dk { background: none; border: 1px solid #232c37; color: #5b6673; border-radius: var(--r); padding: 5px 10px; font-family: var(--mono); font-size: 10.5px; cursor: pointer; transition: border-color .15s, color .15s; } .dk:hover { border-color: var(--amber); color: var(--amber); } .footer { text-align: center; padding: 14px 0 20px; font-family: var(--mono); font-size: 10px; color: #222a34; } /* ---------------- панели ---------------- */ .backdrop { position: fixed; inset: 0; z-index: 60; background: rgba(4,7,10,.6); display: flex; justify-content: flex-end; animation: fadein .18s; } @keyframes fadein { from { opacity: 0; } to { opacity: 1; } } .panel { width: min(400px, 93vw); height: 100vh; background: var(--bg-2); color: #ccd4dd; overflow-y: auto; box-shadow: -14px 0 44px rgba(0,0,0,.5); animation: slidein .24s cubic-bezier(.2,.7,.3,1); } @keyframes slidein { from { transform: translateX(24px); opacity: .4; } to { transform: none; opacity: 1; } } .panel-head { position: sticky; top: 0; z-index: 2; display: flex; justify-content: space-between; align-items: center; padding: 15px 18px; background: var(--bg-2); border-bottom: 1px solid var(--line); } .panel-head h3 { margin: 0; font-family: var(--mono); font-size: 13px; color: var(--amber); letter-spacing: .06em; } .panel-x { background: none; border: 0; color: var(--dim); font-size: 21px; line-height: 1; cursor: pointer; padding: 0 4px; } .panel-x:hover { color: #e6ecf2; } .panel-body { padding: 16px 18px 28px; } .panel-lead { font-size: 12.5px; margin-bottom: 14px; } .panel-body .dim { color: var(--dim); } .panel-body .jcard { background: #19212b; border-color: var(--line-2); } .panel-body .jcard-name { color: var(--amber); } .panel-body .jcard-fact { background: rgba(215,164,74,.1); } .panel-body .jcard-label { color: var(--dim); } .panel-body .jcard-fact b { color: #f0e3c8; } .panel-body .jcard-desc { color: var(--dim); } .hint { font-family: var(--mono); font-size: 12.5px; line-height: 1.55; color: #d3dbe3; margin: 10px 0; padding-left: 11px; border-left: 2px solid var(--amber); } .hint b { color: var(--amber); } /* ---------------- загрузка ---------------- */ .boot { width: 100%; text-align: center; padding-top: 54px; display: flex; flex-direction: column; align-items: center; } .boot-title { font-family: var(--mono); color: var(--amber); letter-spacing: .1em; font-size: 21px; margin: 0; } .boot-sub { color: var(--dim); font-size: 12.5px; max-width: 440px; margin: 8px auto 30px; font-family: var(--mono); } .boot-lines p { font-family: var(--mono); font-size: 13.5px; color: #b9c3ce; margin: 7px 0; opacity: 0; animation: fade .5s forwards; } /* ---------------- тост ---------------- */ #toast { position: fixed; left: 50%; bottom: 26px; z-index: 90; transform: translateX(-50%) translateY(10px); background: #19212b; color: #ecd9b4; border: 1px solid var(--amber); border-radius: var(--r); padding: 10px 18px; max-width: 90vw; font-family: var(--mono); font-size: 12px; opacity: 0; pointer-events: none; transition: opacity .24s, transform .24s; } #toast.on { opacity: 1; transform: translateX(-50%) translateY(0); } /* ---------------- адаптив ---------------- */ @media (max-width: 720px) { .two-col { grid-template-columns: 1fr; } /* На узком экране стол не ужимаем: иначе инвентарные бирки — а на них держится вся загадка — становятся нечитаемыми. Вместо этого даём сцене горизонтальную прокрутку. */ .desk { min-width: 500px; } .scene-box { box-shadow: inset -14px 0 12px -12px rgba(0,0,0,.5); } } @media (max-width: 520px) { body { font-size: 14.5px; } .sheet { padding: 22px 18px 24px; } .sheet h1 { font-size: 21px; } .sheet h2 { font-size: 17px; } .topbar { padding: 10px 13px; } .rail { padding: 9px 13px 0; } .stage { padding: 18px 10px 32px; } .task { flex-direction: column; align-items: flex-start; } .twist { margin-top: 44px; } } @media (prefers-reduced-motion: reduce) { *, *::before, *::after { animation-duration: .01ms !important; transition-duration: .01ms !important; } }