@import "https://fonts.googleapis.com/css2?family=Anton&family=Archivo+Narrow:wght@400;500;600;700&family=Space+Mono:wght@400;700&display=swap";.game-page{background:#171717;position:fixed;inset:0;overflow:hidden}.game-canvas-host{place-items:center;width:100%;height:100%;display:grid}.game-canvas-host canvas{image-rendering:pixelated;display:block}.game-error{color:#fff;background:#8f1d14;border:2px solid #ffb4a9;max-width:min(560px,100% - 32px);margin:0;padding:16px;font:14px/1.45 monospace}.mine-game{color:#17320f;background:#071b08;grid-template-columns:minmax(280px,25%) minmax(0,1fr);font-family:Archivo Narrow,Arial,sans-serif;display:grid;position:fixed;inset:0;overflow:hidden}.mine-sidebar{z-index:20;background:linear-gradient(#0d2a08,#122208);border-right:2px solid #5abe323d;flex-direction:column;gap:10px;min-width:0;padding:12px;display:flex;position:relative}.mine-back{color:#efffe7;cursor:pointer;background:#081f0b;border:1px solid #e0ffc159;border-radius:8px;align-self:flex-start;align-items:center;gap:6px;height:36px;padding:0 12px;font:600 13px Archivo Narrow,Arial,sans-serif;display:inline-flex}.mine-back:hover{background:#174315}.mine-panel{background:#fffffff5;border:2px solid #56aa306b;border-radius:14px;flex-direction:column;flex:1;min-height:0;padding:16px 18px;display:flex;overflow:hidden;box-shadow:0 4px 18px #00000047}.mine-count{text-align:center;color:#5b9838;letter-spacing:3px;text-transform:uppercase;margin-top:2px;font:700 11px Space Mono,monospace}.mine-panel h1{color:#1a3a0d;text-align:center;margin:22px 0 18px;font-size:clamp(20px,1.7vw,28px);line-height:1.25}.mine-divider{background:#dbe8d4;height:1px}.mine-instruction{color:#708269;text-align:center;max-width:28ch;margin:22px auto 0;font-size:15px;line-height:1.5}.mine-score{border-top:1px solid #dbe8d4;justify-content:space-between;align-items:end;margin-top:auto;padding-top:14px;display:flex}.mine-score span{color:#6c8665;letter-spacing:2px;font:700 11px Space Mono,monospace}.mine-score strong{color:#2b6d2a;font-size:46px;line-height:.9}.mine-feedback{text-align:center;margin:26px auto 0}.mine-feedback strong{font-size:24px;line-height:1.1;display:block}.mine-feedback p{color:#51634e;margin:12px 0 8px;font-size:16px;line-height:1.45}.mine-feedback small{color:#7e8f79;font-size:13px;line-height:1.4;display:block}.mine-feedback.correct strong{color:#2f8d45}.mine-feedback.wrong strong{color:#c34d43}.mine-complete{text-align:center;flex-direction:column;flex:1;align-items:center;display:flex}.mine-complete-mark{color:#368f39;background:#d9f3c9;border-radius:50%;place-items:center;width:62px;height:62px;margin:22px 0 10px;font-size:34px;font-weight:800;display:grid}.mine-complete h1{margin:8px 0 10px;font-size:26px}.mine-complete p{color:#61705c;margin:0;line-height:1.45}.mine-complete strong{color:#2d6b2b;margin:28px 0;font-size:34px}.mine-complete button{color:#fff;cursor:pointer;background:#377b35;border:0;border-radius:8px;align-items:center;gap:7px;padding:11px 16px;font-weight:700;display:inline-flex}.mine-field{isolation:isolate;background:#79ad32;position:relative;overflow:hidden}.mine-world{will-change:transform;transition:transform .9s cubic-bezier(.45,0,.18,1);position:absolute;inset:0;overflow:visible}.mine-world.returning{transition-duration:.6s}.mine-tile-pool{image-rendering:auto;background-color:#79ad32;background-image:url(/minesweeper/bg.png);background-position:0 0;background-repeat:repeat;background-size:836px 471px;width:120000px;height:120000px;position:absolute;top:calc(50% - 60000px);left:calc(50% - 60000px)}.mine-tile-pool:after{content:"";pointer-events:none;filter:blur(6px);mix-blend-mode:screen;background:repeating-linear-gradient(#91b83042 0,#91b8301a 26px,#0000 46px 424px,#91b8301a 446px,#91b83057 471px),repeating-linear-gradient(90deg,#91b83033 0,#91b83014 24px,#0000 44px 792px,#91b83014 814px,#91b83042 836px);position:absolute;inset:0}.mine-hud{z-index:15;color:#efffe7;pointer-events:none;background:linear-gradient(#0d501eeb,#0d501e00);border-radius:0 0 18px 18px;align-items:center;gap:17px;min-width:230px;padding:7px 17px 9px;display:flex;position:absolute;top:0;left:50%;transform:translate(-50%)}.mine-field>.mine-hud{display:none}.mine-sidebar .mine-back{order:1}.mine-sidebar-hud{z-index:1;pointer-events:auto;background:#041907b8;border:1px solid #c8ffa02e;border-radius:10px;order:2;width:100%;min-width:0;padding:8px 10px;position:relative;top:auto;left:auto;transform:none}.mine-sidebar-hud .mine-tools{margin-left:auto;position:static}.mine-sidebar-hud .mine-score-hud strong{font-size:20px}.mine-sidebar-hud .mine-progress>span{font-size:9px}.mine-sidebar .mine-panel{order:3}.mine-score-hud{flex-direction:column;align-items:center;line-height:1;display:flex}.mine-score-hud strong{color:#ffe066;text-shadow:0 2px 5px #000000b3;font-size:25px}.mine-score-hud span{color:#c8f0a0;letter-spacing:1.5px;margin-top:4px;font:700 9px Space Mono,monospace}.mine-score-hud span,.mine-score span{font-size:0}.mine-score-hud span:after,.mine-score span:after{content:"CUP";font-size:9px}.mine-progress{text-align:center}.mine-progress>span{color:#c8f0a0;letter-spacing:1.5px;font:700 10px Space Mono,monospace}.mine-progress-track{background:#ffffff2e;border:1px solid #ffffff73;border-radius:999px;width:min(190px,100%);height:8px;margin:7px auto 0;overflow:hidden}.mine-progress-track span{border-radius:inherit;background:linear-gradient(90deg,#ffe066,#cf0);width:0;height:100%;transition:width .45s;display:block;box-shadow:0 0 8px #ffe066bf}.mine-tools{pointer-events:auto;gap:7px;display:flex;position:absolute;top:8px;right:10px}.mine-tools button{color:#efffe7;cursor:pointer;background:#0000005c;border:1px solid #fff3;border-radius:8px;place-items:center;width:36px;height:32px;display:grid}.mine-tools button:hover{background:#00000094}.mine-marker{z-index:6;color:#fff;cursor:pointer;text-shadow:0 2px 6px #000000e6;background:0 0;border:0;flex-direction:column;align-items:center;gap:6px;padding:0;transition:opacity .65s,transform .65s;display:flex;position:absolute;transform:translate(-50%,-30%)}.mine-marker.fading-out{opacity:0;pointer-events:none;transform:translate(-50%,calc(-30% - 10px))}.mine-marker.fresh{animation:.65s both mine-fade-in}.mine-marker span{background:#103d14e0;border:2px solid #ffffffd9;border-radius:50%;place-items:center;width:38px;height:38px;font-size:18px;font-weight:900;transition:transform .18s,background .18s,box-shadow .18s;display:grid}.mine-marker b{text-align:center;white-space:normal;max-width:150px;font-size:15px;line-height:1.15}.mine-marker:hover span,.mine-marker.chosen span{color:#1c3515;background:#e6bd43;transform:scale(1.16);box-shadow:0 0 0 4px #ffe68240}.mine-marker.disabled{pointer-events:none}.mine-player{z-index:10;aspect-ratio:1;object-fit:contain;width:clamp(130px,17vw,230px);height:auto;image-rendering:pixelated;filter:drop-shadow(0 5px 5px #143208b8);pointer-events:none;animation:2.1s ease-in-out infinite mine-bob-top;position:absolute;top:76%;left:50%;transform:translate(-50%,-50%)}.mine-player.is-wobbling{animation:.5s mine-wobble-top}.mine-status{z-index:18;color:#efffe7;background:#153c12db;border:1px solid #fff3;border-radius:9px;padding:9px 15px;font:600 13px Archivo Narrow,Arial,sans-serif;position:absolute;bottom:18px;left:50%;transform:translate(-50%);box-shadow:0 4px 14px #0000003d}.mine-status.success{color:#dcffc1;background:#1b6e30eb}.mine-status.danger{color:#ffe0d2;background:#873025eb}.mine-explosion{z-index:14;pointer-events:none;width:130px;height:130px;position:absolute;top:76%;left:50%;transform:translate(-50%,-50%)}.mine-explosion .mine-ring{border:4px solid #ffdd58;border-radius:50%;animation:.6s ease-out forwards mine-ring;position:absolute;inset:19px;box-shadow:0 0 18px #ff6b20}.mine-explosion i{background:#ffb52e;width:10px;height:10px;animation:.7s ease-out forwards mine-particle;position:absolute;top:calc(50% - 5px);left:calc(50% - 5px);box-shadow:0 0 8px #ff7b23}.mine-explosion i:first-of-type{--x:-42px;--y:-36px}.mine-explosion i:nth-of-type(2){--x:40px;--y:-24px}.mine-explosion i:nth-of-type(3){--x:48px;--y:33px}.mine-explosion i:nth-of-type(4){--x:-35px;--y:40px}.mine-explosion i:nth-of-type(5){--x:-8px;--y:-52px}.mine-explosion b{color:#fff2a6;text-shadow:0 0 10px #ff6f20;place-items:center;font-size:42px;animation:.5s ease-out forwards mine-flash;display:grid;position:absolute;inset:0}@keyframes mine-bob-top{0%,to{top:76%}50%{top:calc(76% - 3px)}}@keyframes mine-wobble-top{0%,to{top:76%}25%{top:calc(76% - 2px)}75%{top:calc(76% + 2px)}}@keyframes mine-ring{to{opacity:0;border-width:2px;inset:-5px}}@keyframes mine-particle{to{transform:translate(var(--x), var(--y)) scale(.35);opacity:0}}@keyframes mine-flash{0%{opacity:1;transform:scale(.7)}60%{opacity:1;transform:scale(1.2)}to{opacity:0;transform:scale(1.4)}}@keyframes mine-fade-in{0%{opacity:0;transform:translate(-50%,calc(10px - 30%))}to{opacity:1;transform:translate(-50%,-30%)}}@media (width<=800px){.mine-game{grid-template-columns:1fr}.mine-sidebar{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#092309e0;border:1px solid #96dc6459;border-radius:10px;width:min(330px,100% - 16px);height:auto;max-height:34%;padding:8px;position:absolute;top:8px;left:8px}.mine-panel{padding:10px 12px}.mine-panel h1{margin:9px 0;font-size:18px}.mine-count{font-size:9px}.mine-instruction{margin:10px auto 0;font-size:13px}.mine-score{display:none}.mine-feedback{margin:10px auto 0}.mine-feedback strong{font-size:19px}.mine-feedback p{margin:5px 0;font-size:13px}.mine-feedback small{font-size:11px}.mine-complete-mark{width:42px;height:42px;margin:8px 0 4px;font-size:24px}.mine-complete h1{margin:5px 0;font-size:20px}.mine-complete strong{margin:10px 0;font-size:25px}.mine-hud{gap:9px;padding:5px 10px 7px}.mine-score-hud strong{font-size:19px}.mine-score-hud span,.mine-progress>span{font-size:8px}.mine-progress-track{width:min(150px,100%);height:7px}.mine-tools{top:6px;right:8px}.mine-tools button{width:32px;height:29px}.mine-marker b{max-width:105px;font-size:12px}.mine-marker span{width:30px;height:30px;font-size:14px}.mine-player{width:180px}.mine-status{font-size:12px;bottom:12px}}@media (prefers-reduced-motion:reduce){.mine-world,.mine-player,.mine-marker span{transition:none}.mine-player,.mine-explosion *{animation:none!important}}.th-game{z-index:30;color:#f3e9d2;-webkit-user-select:none;user-select:none;background:radial-gradient(at top,#2f3a2c 0%,#1a2118 62%,#12160f 100%);padding:24px max(16px,50vw - 584px);font-family:Archivo Narrow,Arial,sans-serif;position:fixed;inset:0;overflow:auto}.th-preview-banner{color:#ffe082;background:linear-gradient(135deg,#ffc10733,#ff98001f);border:1.5px solid #b89525;border-radius:9px;justify-content:space-between;align-items:center;gap:15px;min-height:48px;margin-bottom:12px;padding:9px 16px;font-size:14px;font-weight:800;display:flex}.th-preview-banner button{color:#ffe082;cursor:pointer;white-space:nowrap;background:0 0;border:0;align-items:center;gap:5px;font-weight:800;display:inline-flex}.th-play-row{align-items:stretch;gap:12px;display:flex}.th-viewport{touch-action:none;cursor:crosshair;background:#2b3a2a;border:3px solid #c8a96e;border-radius:18px;flex:1;min-width:0;height:72vh;min-height:340px;position:relative;overflow:hidden;box-shadow:0 10px 40px #0000004d,inset 0 0 60px #3c1e0040}.th-world{transform-origin:0 0;will-change:transform;background-image:url(/game-assets/treasure-hunt/hunt-map.jpg);background-position:0 0;background-repeat:no-repeat;background-size:100% 100%;position:absolute;top:0;left:0}.th-world-tint{-webkit-backdrop-filter:contrast(1.08)saturate(1.12);backdrop-filter:contrast(1.08)saturate(1.12);pointer-events:none;background:radial-gradient(#0000 55%,#121a0e38 100%);position:absolute;inset:0}.th-station{pointer-events:none;flex-direction:column;align-items:center;display:flex;position:absolute;transform:translate(-50%,-50%)}.th-station-icon{z-index:2;filter:drop-shadow(0 3px 5px #0000008c);pointer-events:auto;line-height:1;animation:2.4s ease-in-out infinite th-bob;position:relative}.th-station.passed .th-station-icon{filter:drop-shadow(0 0 7px #4caf50e6)grayscale(.2);animation:none}.th-monster-sprite{-ms-interpolation-mode:nearest-neighbor;width:42px;height:42px;image-rendering:-moz-crisp-edges;image-rendering:pixelated;background-repeat:no-repeat;background-size:400% 400%}.th-ring{background:radial-gradient(circle,#ffd16629,#0000 70%);border:2px dashed #ffd16694;border-radius:50%;width:70px;height:70px;animation:2.6s ease-in-out infinite th-ring;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.th-station.passed .th-ring{background:#4caf5021;border-color:#4caf50b3;animation:none}.th-shadow,.th-char-shadow{filter:blur(3px);pointer-events:none;background:#00000059;border-radius:50%;position:absolute}.th-shadow{width:60%;height:8px;bottom:2px;left:50%;transform:translate(-50%)}.th-tag{color:#fff;white-space:nowrap;background:#0000008c;border-radius:7px;align-items:center;gap:3px;margin-top:4px;padding:2px 7px;font-size:11px;font-weight:800;display:inline-flex;box-shadow:0 1px 3px #0006}.th-tag.passed{background:#4caf50e6}.th-char{pointer-events:none;position:absolute;transform:translate(-50%,-88%)}.th-char img{-o-object-fit:contain;object-fit:contain;opacity:0;filter:drop-shadow(0 4px 6px #00000073);width:100%;height:100%;position:absolute;inset:0}.th-char img.visible{opacity:1}.th-char-shadow{filter:blur(4px);width:45%;height:10px;bottom:4%;left:50%;transform:translate(-50%)}.th-char .th-wobble{opacity:.16;mix-blend-mode:screen}.th-click-ripple{pointer-events:none;z-index:300;background:#ffe08240;border:2px solid #ffe082e6;border-radius:50%;width:10px;height:10px;margin:-5px;animation:.5s ease-out forwards th-ripple;position:absolute}.th-intro{z-index:5;color:#ffe9bf;text-align:center;text-shadow:0 2px 6px #0009;white-space:nowrap;pointer-events:none;background:linear-gradient(160deg,#3c2c18e0,#20180eeb);border:2px solid #c8a96e;border-radius:12px;padding:9px 22px;font-size:17px;font-weight:900;animation:3.2s both th-intro;position:absolute;top:14%;left:50%;transform:translate(-50%,-50%);box-shadow:0 8px 26px #00000073}.th-hud{z-index:4;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#1c1810b8;border:1.5px solid #c8a96ea6;border-radius:14px;position:absolute;box-shadow:0 4px 18px #00000059}.th-hud-player{flex-direction:column;max-width:48%;padding:7px 12px;font-size:12px;line-height:1.35;display:flex;top:10px;left:10px}.th-hud-player strong{white-space:nowrap;text-overflow:ellipsis;font-size:14px;overflow:hidden}.th-hud-player span{opacity:.85}.th-hud-player b{color:#fff}.th-hud-player .th-passport,.th-passport{color:#f6d365;letter-spacing:.12em;font-family:Space Mono,monospace}.th-hud-actions{gap:6px;padding:4px;display:flex;top:10px;right:10px}.th-hud-actions button{color:#fff;cursor:pointer;background:0 0;border:1px solid #c8a96ea6;border-radius:9px;place-items:center;width:34px;height:32px;display:grid}.th-hud-actions button:hover{background:#3c321ee6}.th-mobile-chest{display:none}.th-sidebar{background:linear-gradient(160deg,#3c2c18eb,#20180ef2);border:3px solid #c8a96e;border-radius:18px;flex-direction:column;flex:0 0 210px;gap:10px;width:210px;padding:16px 14px;display:flex;position:relative;box-shadow:0 10px 40px #0000004d,inset 0 0 0 3px #fdf6e31f,inset 0 0 40px #a0783c2e}.th-sidebar-title{color:#ffe9bf;font-size:16px;font-weight:900;line-height:1.25}.th-sidebar-meta{opacity:.86;border-bottom:1.5px dashed #c8a96e73;padding-bottom:10px;font-size:12px;line-height:1.45}.th-sidebar-meta b{color:#fff}.th-progress-label{align-items:center;gap:6px;font-size:12px;font-weight:900;display:flex}.th-progress{background:#00000059;border:1px solid #c8a96e66;border-radius:6px;height:9px;overflow:hidden}.th-progress span{background:linear-gradient(90deg,#86be5c,#4caf50);border-radius:6px;height:100%;transition:width .4s;display:block;box-shadow:0 0 8px #4caf5099}.th-chest{color:#f3e9d2;cursor:default;background:#0003;border:2px solid #c8a96e59;border-radius:14px;flex-direction:column;align-items:center;gap:8px;padding:15px 8px;display:flex}.th-chest span{filter:drop-shadow(0 4px 10px #0008);font-size:48px;line-height:1}.th-chest b{font-size:12px}.th-chest.ready{cursor:pointer;background:radial-gradient(#f6d36526,#0003);border-color:#f6d365;animation:2s ease-in-out infinite th-chest-glow}.th-sidebar-spacer{flex:1}.th-sidebar-button{color:#fff;cursor:pointer;background:linear-gradient(135deg,#8b5e2b,#5d3a18);border:2px solid #c8a96e;border-radius:12px;align-items:center;gap:9px;width:100%;padding:10px 12px;font-size:13px;font-weight:800;display:flex;box-shadow:0 3px 10px #00000059}.th-sidebar-button:hover{background:linear-gradient(135deg,#9c6a32,#6b441d);transform:translateY(-1px)}.th-sidebar-button.danger{background:linear-gradient(135deg,#a4402f,#6e1f1f);border-color:#d98a5e}.th-keybag{color:#fff;background:#1c1810b8;border:1.5px solid #c8a96e;border-radius:14px;align-items:center;gap:5px;width:max-content;max-width:100%;margin:10px auto 0;padding:8px 14px;display:flex}.th-keybag span{background:#ffffff1a;border:1.5px dashed #ffffff59;border-radius:8px;place-items:center;width:30px;height:30px;font-family:Space Mono,monospace;font-size:14px;font-weight:900;display:grid}.th-keybag span.earned{background:#4caf50e6;border-color:#81c784;box-shadow:0 2px 10px #4caf508c}.th-keybag b{white-space:nowrap;align-items:center;gap:4px;margin-left:6px;font-size:12px;display:inline-flex}.th-instruction{color:#ffffff94;text-align:center;justify-content:center;align-items:center;gap:4px;margin:10px auto 0;font-size:12px;display:flex}.th-instruction b{color:#e8dfc4}.th-modal-backdrop{z-index:100;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#0f110bbd;place-items:center;padding:20px;display:grid;position:fixed;inset:0}.th-question-modal{color:#3d2a14;background:#fdf6e3;border:2px solid #8b5e2b8c;border-radius:16px;width:min(900px,100%);display:flex;position:relative;overflow:hidden;box-shadow:0 24px 60px #00000073}.th-question-main{flex-direction:column;flex:1;min-width:0;padding:32px;display:flex}.th-modal-close{z-index:4;color:#fff;cursor:pointer;background:#8b5e2b;border:0;border-radius:50%;place-items:center;width:34px;height:34px;display:grid;position:absolute;top:10px;right:10px}.th-modal-kicker{color:#8b6f47;letter-spacing:.04em;align-items:center;gap:6px;font-size:13px;font-weight:900;display:flex}.th-question-main h2{color:#3d2a14;margin:10px 0 5px;font-size:26px;line-height:1.25}.th-choice-hint{color:#8b6f47;margin:0 0 18px;font-size:14px}.th-true-false{grid-template-columns:1fr 1fr;gap:12px;display:grid}.th-true-false button{color:#5d3a18;cursor:pointer;background:#fff9;border:2px solid #c8a96e;border-radius:12px;justify-content:space-between;align-items:center;min-height:70px;padding:0 18px;font-size:16px;font-weight:900;display:flex}.th-true-false button:hover,.th-true-false button.selected{background:#f3e3c2;border-color:#8b5e2b;box-shadow:0 0 0 3px #c8a96e55}.th-true-false button b{font-size:25px}.th-modal-actions{align-items:center;gap:10px;margin-top:auto;padding-top:22px;display:flex}.th-modal-actions button{color:#6b4d28;cursor:pointer;background:0 0;border:2px solid #c8a96e;border-radius:11px;padding:10px 18px;font-weight:900}.th-modal-actions .attack{color:#fff;background:linear-gradient(135deg,#8b5e2b,#5d3a18);border-color:#8b5e2b;align-items:center;gap:6px;margin-left:auto;display:inline-flex}.th-modal-actions .attack:disabled{cursor:not-allowed;background:#d6c5a4;border-color:#d6c5a4}.th-modal-monster{background:radial-gradient(at 50% 40%,#ffd16629,#0000 70%);border-left:2px dashed #8b5e2b59;flex:0 0 220px;justify-content:center;align-items:center;padding:20px;display:flex;position:relative}.th-modal-monster .th-monster-sprite{width:170px;height:170px}.th-monster-sprite.defeated{animation:.9s ease-in both th-defeat}.th-impact{font-size:48px;animation:.5s ease-out both th-impact;position:absolute}.th-feedback{text-align:center;flex-direction:column;flex:1;justify-content:center;align-items:center;display:flex}.th-feedback span{font-size:58px}.th-feedback h2{margin:8px 0 2px;font-size:30px}.th-feedback p{color:#8b6f47;margin:0;font-size:16px}.is-correct{background:#fdf6e3}.is-wrong .th-question-main{background:linear-gradient(160deg,#f9e8d0,#f4c8ad)}.th-treasure-modal{color:#5d3a18;text-align:center;background:linear-gradient(160deg,#fdf6e3,#ecd9b0);border:3px solid #c8a96e;border-radius:18px;width:min(440px,100%);padding:40px 30px 30px;position:relative;box-shadow:0 24px 60px #00000073}.th-treasure-icon{filter:drop-shadow(0 5px 14px #8b5e2b88);font-size:84px;line-height:1}.th-treasure-modal .th-modal-kicker{justify-content:center;margin-top:12px}.th-treasure-modal h2{letter-spacing:.24em;margin:8px 0;font-family:Space Mono,monospace;font-size:30px}.th-treasure-modal p:not(.th-modal-kicker){margin:0 0 20px;font-size:16px}.th-treasure-modal>button:last-child{color:#fff;cursor:pointer;background:linear-gradient(135deg,#4caf50,#66bb6a);border:0;border-radius:11px;padding:11px 28px;font-weight:900}@keyframes th-bob{0%,to{transform:translateY(0)scale(1)}50%{transform:translateY(-5px)scale(1.04)}}@keyframes th-ring{0%,to{opacity:.75;transform:translate(-50%,-50%)scale(1)}50%{opacity:1;transform:translate(-50%,-50%)scale(1.06)}}@keyframes th-breathe{0%,to{transform:translateY(0)}50%{transform:translateY(-2px)}}@keyframes th-ripple{0%{opacity:.9;transform:scale(.4)}to{opacity:0;transform:scale(4.5)}}@keyframes th-intro{0%{opacity:0;transform:translate(-50%,-70%)scale(.85)}10%,82%{opacity:1;transform:translate(-50%,-50%)scale(1)}to{opacity:0;transform:translate(-50%,-60%)scale(.92)}}@keyframes th-chest-glow{0%,to{box-shadow:0 0 8px #f6d36526}50%{box-shadow:0 0 18px #f6d36559}}@keyframes th-defeat{0%{transform:rotate(0)scale(1)}40%{transform:rotate(8deg)scale(1.05)}to{opacity:.35;filter:grayscale()brightness(.6);transform:translateY(14%)rotate(88deg)scale(.88)}}@keyframes th-impact{0%{opacity:0;transform:scale(.4)}40%{opacity:1;transform:scale(1.3)}to{opacity:0;transform:scale(1.8)}}@media (width<=900px){.th-game{padding:12px}.th-play-row{display:block}.th-sidebar{display:none}.th-viewport{height:64vh}.th-mobile-chest{z-index:5;display:block;position:absolute;bottom:10px;left:50%;transform:translate(-50%)}.th-mobile-chest button{color:#fff;background:#1c1810d9;border:1.5px solid #c8a96e;border-radius:10px;padding:8px 14px;font-size:12px;font-weight:900}.th-mobile-chest button:disabled{opacity:.72}.th-keybag{margin-top:8px}.th-instruction{font-size:11px;line-height:1.35}.th-question-main{padding:26px 20px}.th-modal-monster{flex-basis:180px}.th-modal-monster .th-monster-sprite{width:135px;height:135px}}@media (width<=600px){.th-game{padding:8px}.th-preview-banner{align-items:flex-start;padding:8px 10px;font-size:12px}.th-preview-banner button{font-size:11px}.th-viewport{border-radius:14px;min-height:340px}.th-intro{white-space:normal;max-width:calc(100% - 24px);padding:8px 12px;font-size:12px}.th-hud-player{max-width:65%;font-size:10px}.th-hud-player strong{font-size:11px}.th-hud-actions button{width:30px;height:29px}.th-monster-sprite{width:36px;height:36px}.th-tag{font-size:9px}.th-ring{width:58px;height:58px}.th-keybag span{border-radius:6px;width:24px;height:24px;font-size:12px}.th-keybag b{font-size:10px}.th-question-modal{max-height:92vh;display:block;overflow:auto}.th-question-main{padding:30px 16px 16px}.th-question-main h2{font-size:21px}.th-true-false{grid-template-columns:1fr;gap:8px}.th-true-false button{min-height:52px}.th-modal-actions{padding-top:16px}.th-modal-monster{border-top:2px dashed #8b5e2b59;border-left:0;height:92px;padding:4px}.th-modal-monster .th-monster-sprite{width:78px;height:78px}.th-feedback span{font-size:46px}.th-feedback h2{font-size:24px}.th-treasure-modal{padding:32px 20px 24px}.th-treasure-icon{font-size:66px}}@media (prefers-reduced-motion:reduce){.th-station-icon,.th-ring,.th-char.idle .th-char-sprites,.th-chest.ready{animation:none!important}}.th-station.attempted .th-station-icon{filter:drop-shadow(0 0 7px #ff9800)}.th-tag.attempted{background:#d97706e6}.th-game{padding:10px;overflow:hidden}.th-play-row{height:calc(100dvh - 20px)}.th-viewport{border-radius:12px;height:100%;min-height:0}.th-char.idle .th-char-sprites{animation:2.1s ease-in-out infinite mine-bob}.th-char-sprites{position:absolute;inset:0}.th-monster-sprite{-ms-interpolation-mode:nearest-neighbor;image-rendering:-moz-crisp-edges;image-rendering:pixelated;image-rendering:-webkit-optimize-contrast;overflow:hidden}.th-modal-backdrop.is-correct,.th-modal-backdrop.is-wrong{background:#0f110bbd}.th-modal-backdrop.is-correct .th-question-modal{background:linear-gradient(160deg,#f5ead4,#e6d1a8)}.th-modal-backdrop.is-correct .th-modal-monster{background:radial-gradient(at 50% 40%,#5a646e3b,#0000 70%)}.th-treasure-modal>button:last-child{font-size:0}@keyframes mine-bob{0%,to{transform:translateY(0)}50%{transform:translateY(-3px)}}.th-chest-world{cursor:default;pointer-events:none;filter:drop-shadow(0 5px 8px #0000008c);flex-direction:column;align-items:center;gap:3px;animation:1.8s ease-in-out infinite th-chest-breathe;display:flex;position:absolute;transform:translate(-50%,-50%)}.th-chest-world img{-o-object-fit:contain;object-fit:contain;width:clamp(58px,5vw,94px);height:auto}.th-chest-world span{color:#ffe9bf;white-space:nowrap;background:#20180ed9;border:1px solid #c8a96e;border-radius:7px;padding:2px 8px;font-size:11px;font-weight:900}.th-chest-world .chest-ring{background:radial-gradient(circle,#f6d3653d,#0000 70%);border-color:#f6d365;width:clamp(88px,7vw,126px);height:clamp(88px,7vw,126px)}@keyframes th-chest-breathe{0%,to{transform:translate(-50%,-50%)scale(1)}50%{transform:translate(-50%,-50%)scale(1.06)}}.th-hud-title{color:#fff;flex-direction:column;gap:2px;padding:8px 12px;display:flex;top:12px;left:12px}.th-hud-title strong{letter-spacing:.02em;font-size:15px}.th-hud-title span{color:#f6d365;font-size:11px;font-weight:800}.th-hud-progress{background:#0009;border-radius:7px;width:min(240px,30vw);height:8px;top:12px;left:50%;overflow:hidden;transform:translate(-50%)}.th-hud-progress span{border-radius:inherit;background:linear-gradient(90deg,#f6d365,#4caf50);height:100%;transition:width .35s;display:block}.th-hud-help{color:#fff9;white-space:nowrap;border-radius:8px;align-items:center;gap:5px;padding:6px 10px;font-size:11px;display:flex;bottom:12px;left:50%;transform:translate(-50%)}.th-treasure-modal{flex-direction:column;align-items:center;display:flex}.th-treasure-modal>img{filter:drop-shadow(0 8px 16px #8b5e2b66);width:min(260px,80vw);height:auto;margin:0 auto 10px;display:block}.th-treasure-modal h2{color:#5d3a18;margin:0 0 8px}.th-treasure-modal p{color:#8b6f47}@media (width<=900px){.th-game{padding:0}.th-play-row{height:100dvh}.th-hud-help{bottom:10px}.th-hud-title{top:10px;left:10px}.th-hud-progress{top:10px}.th-viewport{border:0;border-radius:0}}@media (width<=600px){.th-hud-title{padding:6px 9px}.th-hud-title strong{font-size:12px}.th-hud-title span{font-size:9px}.th-hud-progress{width:32vw;height:6px}.th-hud-help{font-size:9px;bottom:8px}.th-chest-world img{width:62px}.th-chest-world span{font-size:9px}}.th-station-icon{animation:2.4s ease-in-out infinite th-bob-snapped}@keyframes th-bob-snapped{0%,to{transform:translateY(0)}50%{transform:translateY(-5px)}}.th-station{width:0;height:0;display:block}.th-station-icon{animation:2.4s ease-in-out infinite th-bob-point;position:absolute;top:0;left:0;transform:translate(-50%,-50%)}.th-tag{margin-top:4px;position:absolute;top:66px;left:0;transform:translate(-50%)}.th-shadow{width:38px;top:31px;bottom:auto;left:0;transform:translate(-50%)}@keyframes th-bob-point{0%,to{transform:translate(-50%,-50%)}50%{transform:translate(-50%,calc(-50% - 5px))}}@media (width<=600px){.th-tag{top:46px}.th-shadow{width:28px;top:22px}}.th-station-icon{transform:translate(-50%,-50%);animation:none!important}.th-char img.th-side-frame{transform-origin:50% 100%;transform:scale(.78)}.th-treasure-modal>button:last-child:after{content:"Tổng kết";font-size:14px}:root{color:#111;--blue:#0040df;--lime:#cf0;--yellow:#e7e700;--purple:#9d00ff;--red:#d52a0a;--green:#168a4a;--ink:#111;background:#f9f9f9;font-family:Archivo Narrow,Arial,sans-serif}.achievement-celebration-backdrop{z-index:3000;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#111111b8;place-items:center;padding:20px;display:grid;position:fixed;inset:0}.achievement-celebration{border:4px solid var(--ink);width:min(460px,100%);box-shadow:8px 8px 0 var(--ink);text-align:center;background:#fff;justify-items:center;gap:10px;padding:42px 28px 28px;animation:.35s ease-out both achievement-pop;display:grid;position:relative}.achievement-celebration-close{border:2px solid var(--ink);cursor:pointer;background:#fff;place-items:center;width:34px;height:34px;display:grid;position:absolute;top:10px;right:10px}.achievement-celebration-icon{color:#c29400;animation:1s ease-in-out infinite alternate achievement-trophy}.achievement-celebration h2{color:var(--blue);margin:0;font:32px/1 Anton}.achievement-celebration strong{text-transform:uppercase;font:25px Anton}.achievement-celebration p{color:#666;margin:0;font:13px Space Mono}.achievement-confetti{z-index:3001;pointer-events:none;width:100vw;height:100vh;display:block;position:fixed;inset:0;overflow:hidden}.achievement-confetti i{top:-20px;left:calc((var(--i) * 37) % 100 * 1%);background:hsl(calc(var(--i) * 43), 85%, 55%);width:9px;height:18px;animation:1.8s ease-in forwards achievement-confetti;animation-delay:calc((var(--i) % 8) * 80ms);transform:rotate(calc(var(--i) * 37deg));position:absolute}@keyframes achievement-pop{0%{opacity:0;transform:scale(.84)translateY(16px)}to{opacity:1;transform:scale(1)translateY(0)}}@keyframes achievement-trophy{to{transform:translateY(-5px)rotate(3deg)}}@keyframes achievement-confetti{to{transform:translateX(calc((var(--i) - 14) * 8px)) rotate(720deg);opacity:.2;top:110%}}@media (prefers-reduced-motion:reduce){.achievement-celebration,.achievement-celebration-icon,.achievement-confetti i{animation:none}}.library-page,.collection-page,.book-page,.admin-library-page,.library-import-page{gap:24px;display:grid}.library-hero,.collection-hero,.book-detail-panel,.import-form,.import-preview{border:3px solid var(--ink);box-shadow:4px 4px 0 var(--ink);background:#fff}.library-hero{gap:18px;padding:31px;display:grid;position:relative;overflow:hidden}.library-hero:after{content:"";background:var(--yellow);border:3px solid var(--ink);width:118px;height:118px;position:absolute;top:-24px;right:-24px;transform:rotate(12deg)}.library-hero>*{z-index:1;position:relative}.library-hero h1,.collection-hero h1,.book-detail-content h1{text-transform:uppercase;color:var(--blue);margin:0;font:52px/.98 Anton}.library-hero p,.collection-hero p{border-left:3px solid var(--red);max-width:610px;margin:12px 0 0;padding-left:14px;font-size:20px;line-height:1.45}.library-admin-link{justify-self:start}.library-search,.collection-search{border:3px solid var(--ink);background:#fff;align-items:center;gap:12px;width:min(100%,620px);min-height:54px;padding:0 16px;display:flex}.library-search input,.collection-search input{background:0 0;border:0;outline:0;width:100%;min-width:0;font-size:18px}.library-search:focus-within,.collection-search:focus-within{box-shadow:4px 4px 0 var(--blue)}.library-section-title{align-items:center;gap:14px;display:flex}.library-section-title span{background:var(--ink);flex:1;height:3px}.library-section-title h2{text-transform:uppercase;white-space:nowrap;margin:0;font:29px/1 Anton}.library-collection-grid,.book-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:22px;display:grid}.library-collection-card,.book-card{border:3px solid var(--ink);box-shadow:4px 4px 0 var(--ink);background:#fff}.library-collection-card{--collection-accent:var(--blue);flex-direction:column;gap:16px;min-height:410px;padding:20px;display:flex}.library-collection-card.accent-purple{--collection-accent:var(--purple)}.library-collection-card.accent-yellow{--collection-accent:var(--yellow)}.library-collection-card.accent-red{--collection-accent:var(--red)}.collection-card-head{justify-content:space-between;gap:12px;display:flex}.collection-card-head h2{text-transform:uppercase;margin:0;font:30px/1 Anton}.collection-icon{border:3px solid var(--ink);background:var(--collection-accent);color:#fff;width:44px;height:44px;box-shadow:3px 3px 0 var(--ink);flex:none;place-items:center;display:grid}.accent-yellow .collection-icon{color:var(--ink)}.collection-description{border-left:3px solid var(--collection-accent);min-height:51px;margin:0;padding-left:12px;font-size:18px;line-height:1.4}.collection-previews{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;min-height:84px;display:grid}.collection-previews span{text-align:center;border:3px solid var(--ink);text-transform:uppercase;background:#e8e8e8;justify-content:center;align-items:center;min-width:0;padding:10px 7px;font:10px/1.2 Space Mono;display:flex;overflow:hidden}.collection-stats{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-top:auto;display:grid}.collection-stats div{border-top:3px solid var(--ink);min-width:0;padding-top:9px}.collection-stats strong,.collection-stats span{display:block}.collection-stats strong{overflow-wrap:anywhere;color:var(--collection-accent);font:24px/1 Anton}.collection-stats span{margin-top:5px;font:10px/1.1 Space Mono}.collection-explore{color:#fff;width:100%;margin-top:2px;background:var(--collection-accent)!important}.accent-yellow .collection-explore{color:var(--ink)}.library-empty{align-content:center;justify-items:center;gap:12px;min-height:310px;display:grid}.library-empty .button{margin-top:8px}.empty-icon{border:3px solid var(--ink);background:var(--yellow);width:68px;height:68px;box-shadow:4px 4px 0 var(--ink);place-items:center;display:grid}.back-link,.book-detail-link{width:max-content;color:var(--ink);align-items:center;gap:7px;font:700 12px Space Mono;text-decoration:none;display:inline-flex}.back-link:hover,.book-detail-link:hover{color:var(--blue)}.collection-hero{grid-template-columns:minmax(0,1fr) 250px;gap:22px;padding:28px;display:grid}.collection-hero h1{color:var(--ink)}.collection-hero-stats{border-left:3px solid var(--ink);grid-template-columns:1fr;display:grid}.collection-hero-stats div{border-bottom:2px solid #ddd;align-content:center;padding:8px 0 8px 18px;display:grid}.collection-hero-stats div:last-child{border:0}.collection-hero-stats strong{color:var(--blue);font:36px/1 Anton}.collection-hero-stats span{margin-top:4px;font:11px Space Mono}.book-filter-panel{border:3px solid var(--ink);box-shadow:4px 4px 0 var(--ink);background:#fff;grid-template-columns:minmax(0,1fr) 180px 140px;gap:10px;padding:16px;display:grid}.book-filter-panel>label:not(.collection-search){grid-template-columns:auto 1fr;align-items:center;gap:6px 8px;min-width:0;font:10px Space Mono;display:grid}.book-filter-panel>label:not(.collection-search) span{grid-column:1/-1}.book-filter-panel select{border:3px solid var(--ink);background:#fff;border-radius:0;width:100%;min-width:0;height:34px;padding:0 5px;font:14px Archivo Narrow}.book-card{flex-direction:column;min-height:344px;display:flex;overflow:hidden}.book-category{border-bottom:3px solid var(--ink);background:var(--blue);color:#fff;text-transform:uppercase;text-overflow:ellipsis;white-space:nowrap;padding:9px 12px;font:11px Space Mono;overflow:hidden}.book-cover-placeholder{color:#545761;border-bottom:3px solid var(--ink);background-color:#e8e8e8;background-image:radial-gradient(#929292 1px,#0000 1px);background-size:16px 16px;place-items:center;min-height:126px;display:grid}.book-card-body{flex-direction:column;height:100%;padding:15px;display:flex}.book-card-body h3{text-transform:uppercase;margin:0;font:25px/1.05 Anton}.book-card-body>p{border-bottom:2px solid #d5d5d5;margin:6px 0 13px;padding-bottom:10px;font-size:17px;font-weight:700}.book-card dl{grid-template-columns:minmax(0,1fr) auto;gap:10px;margin:auto 0 14px;display:grid}.book-card dt,.book-card dd{margin:0}.book-card dt{color:#5d6270;font:10px Space Mono}.book-card dd{text-overflow:ellipsis;white-space:nowrap;max-width:140px;margin-top:4px;font-size:15px;font-weight:700;overflow:hidden}.book-detail-link{border-top:3px solid var(--ink);padding-top:10px}.book-detail-panel{grid-template-columns:235px minmax(0,1fr);gap:28px;padding:26px;display:grid}.book-detail-cover{border:3px solid var(--ink);background-color:#e8e8e8;background-image:radial-gradient(#999 1px,#0000 1px);background-size:20px 20px;flex-direction:column;justify-content:space-between;align-items:flex-start;min-height:330px;padding:15px;display:flex}.book-detail-cover span{background:var(--blue);color:#fff;text-transform:uppercase;padding:8px;font:11px Space Mono}.book-detail-cover svg{align-self:center}.book-detail-author{margin:8px 0 24px;font-size:22px;font-weight:700}.book-question-action{margin:0 0 24px}.question-banks-page,.question-bank-page{background-color:#f9f9f9;background-image:radial-gradient(#bfc4d4 1px,#0000 1px);background-size:20px 20px;gap:24px;display:grid}.question-bank-list{grid-template-columns:repeat(3,minmax(0,1fr));gap:22px;display:grid}.question-bank-card{color:var(--ink);border:3px solid var(--ink);box-shadow:4px 4px 0 var(--ink);background:#fff;flex-direction:column;min-height:260px;padding:20px;text-decoration:none;display:flex}.question-bank-card:hover{box-shadow:6px 6px 0 var(--ink);transform:translate(-2px,-2px)}.question-bank-card-top{color:#fff;background:var(--blue);justify-content:space-between;align-items:center;margin:-20px -20px 20px;padding:12px 16px;font:12px Space Mono;display:flex}.question-bank-card h2{text-transform:uppercase;margin:0;font:34px/1.02 Anton}.question-bank-card p{margin:8px 0 24px;font-size:19px;font-weight:700}.question-bank-stats{grid-template-columns:1.3fr 1fr 1fr;gap:10px;margin-top:auto;display:grid}.question-bank-stats div{border-top:3px solid var(--ink);gap:4px;padding-top:8px;display:grid}.question-bank-stats strong{color:var(--blue);font:34px/1 Anton}.question-bank-stats span{align-items:center;gap:4px;font:10px Space Mono;display:inline-flex}.question-empty{text-align:center;align-content:center;justify-items:center;gap:12px;min-height:410px;display:grid}.question-empty p{margin:0 0 10px;font-size:18px}.question-bank-hero{border:3px solid var(--ink);box-shadow:4px 4px 0 var(--ink);background:#fff;grid-template-columns:100px 1fr auto;align-items:center;gap:22px;padding:22px;display:grid;position:relative}.question-book-mark{border:3px solid var(--ink);background:#e8e8e8;place-items:center;width:100px;height:120px;display:grid;overflow:hidden}.question-book-mark img{object-fit:cover;width:100%;height:100%}.question-book-mark span{color:var(--blue)}.question-bank-hero h1{text-transform:uppercase;margin:4px 0 5px;font:52px/.98 Anton}.question-bank-hero p{margin:0;font-size:20px;font-weight:700}.question-bank-hero-actions{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:12px;display:flex}.question-point-field{max-width:180px}.question-point-field input{border:3px solid var(--ink);background:#fff;padding:13px;font:18px Archivo Narrow}.question-stat-grid{grid-template-columns:repeat(3,1fr);gap:18px;display:grid}.question-stat-grid>div{border:3px solid var(--ink);border-top:9px solid var(--ink);box-shadow:4px 4px 0 var(--ink);background:#fff;gap:20px;padding:20px;display:grid}.question-stat-grid .mc{border-top-color:var(--blue)}.question-stat-grid .tf{border-top-color:var(--lime)}.question-stat-grid span{font:12px Space Mono}.question-stat-grid strong{font:55px/1 Anton}.question-list-heading{border-bottom:3px solid var(--ink);justify-content:space-between;align-items:end;gap:16px;padding-bottom:10px;display:flex}.question-list-heading h2{text-transform:uppercase;margin:0;font:38px/1 Anton}.question-list-heading>div{flex-wrap:wrap;gap:8px;display:flex}.question-list-heading button{border:3px solid var(--ink);box-shadow:2px 2px 0 var(--ink);cursor:pointer;background:#fff;padding:9px 13px;font:11px Space Mono}.question-list-heading button.selected{background:var(--blue);color:#fff}.question-cards{grid-template-columns:repeat(2,minmax(0,1fr));gap:22px;display:grid}.question-card{border:3px solid var(--ink);box-shadow:4px 4px 0 var(--ink);background:#fff;flex-direction:column;min-width:0;display:flex}.question-card>header{border-bottom:3px solid var(--ink);color:#fff;padding:12px 16px}.question-card>header.mc{background:var(--blue)}.question-card>header.tf{background:var(--lime);color:var(--ink)}.question-card header strong{align-items:center;gap:7px;font:12px Space Mono;display:inline-flex}.question-card-content{gap:16px;padding:20px;display:grid}.question-card h3{margin:0;font:26px/1.12 Archivo Narrow}.answer-summary{gap:8px;display:grid}.answer-summary span{border:3px solid var(--ink);padding:9px 12px;font-size:17px}.answer-summary span.correct{background:var(--lime);font-weight:700}.tf-summary{align-items:center;gap:8px;font:700 16px Space Mono;display:inline-flex}.explanation{border:3px solid var(--ink);background:#eee;gap:5px;margin:0;padding:12px;font-size:16px;display:grid}.explanation strong{font:11px Space Mono}.question-card footer{border-top:3px solid var(--ink);gap:12px;padding:12px;display:flex}.question-card footer .button{flex:1}.question-modal-body{background-color:#fff;background-image:radial-gradient(#c3c7d4 1px,#0000 1px);background-size:20px 20px;gap:22px;max-height:70vh;padding:22px;display:grid;overflow-y:auto}.question-type-tabs{border-bottom:3px solid var(--ink);gap:12px;padding-bottom:16px;display:flex}.question-type-tabs button{border:3px solid var(--ink);box-shadow:3px 3px 0 var(--ink);cursor:pointer;background:#fff;flex:1;justify-content:center;align-items:center;gap:8px;padding:13px;font:12px Space Mono;display:inline-flex}.question-type-tabs button.active{background:var(--blue);color:#fff}.question-field{gap:8px;display:grid}.question-field>span,.question-field-heading span{font:700 12px Space Mono}.question-field>span small{color:#656a7b}.question-field textarea,.question-option-input input{border:3px solid var(--ink);background:#fff;outline:0;padding:13px;font:18px/1.4 Archivo Narrow}.question-field textarea{resize:vertical;min-height:120px}.question-field textarea:focus,.question-option-input input:focus{box-shadow:4px 4px 0 var(--blue)}.question-field textarea.short{min-height:80px}.question-options{gap:10px;display:grid}.question-field-heading{border-bottom:3px solid var(--ink);justify-content:space-between;padding-bottom:8px;display:flex}.question-field-heading small{color:var(--blue);font:11px Space Mono}.question-option-input{background:#f3f3f3;grid-template-columns:26px 1fr 32px;align-items:center;gap:10px;padding:10px;display:grid}.question-option-input strong{font:26px Anton}.question-option-input button{color:#697083;cursor:pointer;background:0 0;border:0;place-items:center;display:grid}.question-option-input button.correct{color:var(--blue)}.tf-choice{grid-template-columns:1fr 1fr;gap:12px;display:grid}.tf-choice button{border:3px solid var(--ink);box-shadow:3px 3px 0 var(--ink);cursor:pointer;background:#fff;justify-content:center;align-items:center;gap:8px;padding:18px;font:24px Anton;display:flex}.tf-choice button.selected.true{background:var(--lime)}.tf-choice button.selected.false{background:var(--red);color:#fff}@media (width<=900px){.question-bank-list,.question-cards{grid-template-columns:1fr 1fr}.question-bank-hero{grid-template-columns:80px 1fr}.question-book-mark{width:80px;height:100px}.question-bank-delete{grid-column:1/-1;justify-self:start}}@media (width<=640px){.question-bank-list,.question-cards,.question-stat-grid{grid-template-columns:1fr}.question-bank-hero{grid-template-columns:64px 1fr;gap:13px;padding:15px}.question-book-mark{width:64px;height:82px}.question-bank-hero h1{font-size:34px}.question-list-heading{flex-direction:column;align-items:start}.question-type-tabs,.tf-choice{flex-direction:column;grid-template-columns:1fr}.question-modal-body{padding:15px}.question-option-input{grid-template-columns:25px 1fr 30px;padding:7px}.question-card h3{font-size:22px}}.question-import-modal{flex-direction:column;width:min(980px,100%);max-height:min(92dvh,920px);padding:0;display:flex;overflow:hidden}.question-import-heading{border-bottom:3px solid var(--ink);justify-content:space-between;align-items:flex-start;gap:16px;padding:24px;display:flex}.question-import-heading h2{color:var(--blue);margin:3px 0 0}.question-import-steps{border-bottom:3px solid var(--ink);grid-template-columns:1fr 1fr;display:grid}.question-import-steps span{background:#eee;padding:13px 20px;font:12px Space Mono}.question-import-steps span.active{color:#fff;background:var(--blue)}.question-import-upload,.question-import-preview{background-color:#f9f9f9;background-image:radial-gradient(#c3c7d4 1px,#0000 1px);background-size:20px 20px;gap:18px;padding:24px;display:grid;overflow:auto}.question-import-dropzone{border:3px dashed var(--ink);min-height:240px;color:var(--ink);cursor:pointer;background:#fff;align-content:center;place-items:center;gap:10px;display:grid}.question-import-dropzone:hover{background:var(--yellow)}.question-import-dropzone strong{font:28px Anton}.question-import-dropzone small{font:16px Archivo Narrow}.question-import-guide{border:3px solid var(--ink);background:#fff;gap:8px;padding:15px;display:grid}.question-import-guide strong{font:12px Space Mono}.question-import-guide span{font-size:17px;line-height:1.4}.question-import-filebar,.question-import-ready{border:3px solid var(--ink);background:#fff;justify-content:space-between;align-items:center;gap:12px;padding:14px;font:12px Space Mono;display:flex}.question-import-filebar span{overflow-wrap:anywhere;align-items:center;gap:8px;display:inline-flex}.question-import-ready{background:var(--blue);color:#fff;justify-content:flex-start;font-weight:700}.question-import-stat-grid{grid-template-columns:repeat(3,1fr);gap:12px;display:grid}.question-import-stat-grid div{border:3px solid var(--ink);box-shadow:4px 4px 0 var(--ink);background:#fff;gap:15px;padding:15px;display:grid}.question-import-stat-grid div.invalid{color:var(--red);background:#ffe4df}.question-import-stat-grid span{font:11px Space Mono}.question-import-stat-grid strong{font:42px/1 Anton}.question-import-error-summary{border:3px solid var(--red);background:#ffe4df;padding:16px}.question-import-error-summary h3{color:var(--red);align-items:center;gap:8px;margin:0 0 12px;font:25px Anton;display:flex}.question-import-error-summary p{grid-template-columns:100px 1fr;gap:10px;margin:8px 0;font-size:16px;display:grid}.question-import-error-summary p strong{font:11px Space Mono}.question-import-list{border:3px solid var(--ink);background:#fff;max-height:360px;overflow:auto}.question-import-list-head{border-bottom:3px solid var(--ink);background:var(--yellow);padding:12px;font:11px Space Mono}.question-import-row{border-bottom:2px solid #ddd;grid-template-columns:44px 48px minmax(0,1fr) auto;align-items:center;gap:12px;padding:12px;display:grid}.question-import-row:last-child{border-bottom:0}.question-import-row>span,.question-import-row em{color:#596070;font:11px Space Mono}.question-import-row b{border:2px solid var(--ink);background:var(--blue);color:#fff;width:max-content;padding:4px 7px;font:11px Space Mono}.question-import-row b.tf{background:var(--lime);color:var(--ink)}.question-import-row strong{overflow-wrap:anywhere;min-width:0;font-size:17px}.question-import-row em{white-space:nowrap;font-style:normal;display:none}.question-import-guide strong{font-size:0}.question-import-guide strong:after{content:"A TYPE · B QUESTION · C-F OPTIONS · G EXPLAIN";font-size:12px}.question-import-guide span{font-size:0}.question-import-guide span:after{content:"MC: 4 đáp án, chỉ 1 đáp án bắt đầu bằng *. TF: C = * là TRUE, D = * là FALSE.";font-size:17px}.question-import-footer{border-top:3px solid var(--ink);background:#eee;justify-content:space-between;align-items:center;gap:12px;padding:18px 24px;display:flex}.question-import-footer>:last-child{margin-left:auto}@media (width<=640px){.question-bank-hero-actions{grid-column:1/-1;justify-content:stretch}.question-bank-hero-actions .button{flex:1}.question-import-heading,.question-import-upload,.question-import-preview,.question-import-footer{padding:16px}.question-import-stat-grid{grid-template-columns:1fr}.question-import-row{grid-template-columns:34px 42px minmax(0,1fr)}.question-import-row em{grid-column:3}.question-import-footer{flex-wrap:wrap}.question-import-footer .button{flex:1}.question-import-footer>:last-child{flex-basis:100%;margin-left:0}}.question-book-mark{aspect-ratio:3/4;height:auto}.question-book-mark>.book-cover-fallback,.question-book-mark>.book-cover-image{aspect-ratio:3/4;width:100%;height:100%;min-height:0;box-shadow:none}.question-book-mark>.book-cover-fallback{padding:8px}.question-book-mark>.book-cover-image{object-fit:cover;display:block}.question-list-heading{align-items:center}.question-list-title{align-items:center;gap:18px;display:flex}.question-list-title h2{white-space:nowrap}.question-filters{flex-wrap:wrap;justify-content:flex-end;gap:8px;display:flex}.question-cards{align-items:start}.question-card{align-self:start;height:auto}.question-card-content{align-content:start}.question-card-label{color:#5d6270;font:11px Space Mono}.question-answer-reveal{gap:14px;display:grid}.answer-summary span{justify-content:space-between;align-items:center;gap:10px;display:flex}.tf-summary{flex-wrap:wrap}.tf-summary>span{color:#5d6270;width:100%;font:11px Space Mono}.answer-toggle{border:3px solid var(--ink);box-shadow:3px 3px 0 var(--ink);color:var(--ink);cursor:pointer;background:#fff;justify-self:start;align-items:center;gap:8px;padding:10px 13px;font:11px Space Mono;display:inline-flex}.answer-toggle:hover{background:var(--yellow)}@media (width<=640px){.question-list-heading{align-items:stretch}.question-list-title{flex-direction:column;align-items:stretch;gap:12px}.question-list-title .button{justify-content:center;width:100%}.question-filters{justify-content:flex-start}.question-filters button{flex:auto}}.book-detail-facts{border-top:3px solid var(--ink);border-left:3px solid var(--ink);grid-template-columns:1fr 1fr;margin:0;display:grid}.book-detail-facts div{border-right:3px solid var(--ink);border-bottom:3px solid var(--ink);min-height:82px;padding:13px}.book-detail-facts dt{color:#515563;font:10px Space Mono}.book-detail-facts dd{margin:8px 0 0;font-size:18px;font-weight:700}.admin-library-heading{margin:0}.library-admin-stats,.import-summary-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;display:grid}.admin-stat,.import-summary-grid>div{border:3px solid var(--ink);min-height:126px;box-shadow:4px 4px 0 var(--ink);background:#fff;flex-direction:column;justify-content:space-between;padding:17px;display:flex}.admin-stat span,.import-summary-grid span{font:11px Space Mono}.admin-stat strong,.import-summary-grid strong{overflow-wrap:anywhere;font:45px/1 Anton}.admin-stat.blue{background:var(--blue);color:#fff}.admin-stat.red{background:var(--red);color:#fff}.admin-stat:last-child strong{font-size:27px}.admin-collection-table-wrap,.import-book-table-wrap{border:3px solid var(--ink);box-shadow:4px 4px 0 var(--ink);background:#fff;overflow-x:auto}.admin-collection-table,.import-book-table{border-collapse:collapse;width:100%;min-width:700px}.admin-collection-table th,.import-book-table th{background:var(--blue);color:#fff;border-bottom:3px solid var(--ink);border-right:3px solid var(--ink);text-align:left;padding:14px;font:11px Space Mono}.admin-collection-table td,.import-book-table td{border-right:3px solid var(--ink);border-bottom:3px solid var(--ink);padding:14px;font-size:17px}.admin-collection-table tr:last-child td,.import-book-table tr:last-child td{border-bottom:0}.admin-collection-table th:last-child,.admin-collection-table td:last-child,.import-book-table th:last-child,.import-book-table td:last-child{border-right:0}.admin-collection-table td strong,.admin-collection-table td small,.import-book-table td strong,.import-book-table td small{display:block}.admin-collection-table td strong,.import-book-table td strong{text-transform:uppercase;font:22px Anton}.admin-collection-table td small,.import-book-table td small{color:#565b67;margin-top:4px;font:10px Space Mono}.icon-button{border:3px solid var(--ink);width:38px;height:38px;color:var(--ink);box-shadow:3px 3px 0 var(--ink);background:#fff;place-items:center;text-decoration:none;display:grid}.icon-button:active,.button:active{box-shadow:none;transform:translate(4px,4px)}.library-pagination{justify-content:center;align-items:center;gap:12px;display:flex}.library-pagination span{font:11px Space Mono}.icon-button:disabled{cursor:not-allowed;opacity:.45;box-shadow:none}.import-steps{flex-wrap:wrap;gap:10px;display:flex}.import-steps div{border:3px solid var(--ink);background:#fff;align-items:center;gap:8px;padding:8px 12px;font:11px Space Mono;display:flex}.import-steps div.active{background:var(--yellow);box-shadow:3px 3px 0 var(--ink)}.import-steps span{font:18px Anton}.import-heading{margin:0}.import-form,.import-preview{overflow:hidden}.import-form-fields{gap:18px;padding:22px;display:grid}.import-form-fields label,.import-file-field>span{font:700 11px Space Mono}.import-form-fields input,.import-form-fields textarea{border:3px solid var(--ink);background:#fff;width:100%;margin-top:7px;padding:12px;font-size:18px;display:block}.import-form-fields textarea{resize:vertical;min-height:96px}.import-form-fields input:focus,.import-form-fields textarea:focus{box-shadow:4px 4px 0 var(--blue);outline:0}.file-select{border:3px dashed var(--ink);cursor:pointer;text-align:left;background:#f3f3f3;grid-template-columns:auto 1fr;align-items:center;gap:3px 14px;width:100%;min-height:100px;margin-top:7px;padding:16px;display:grid}.file-select svg{color:var(--blue);grid-row:1/span 2}.file-select strong{overflow-wrap:anywhere;text-transform:uppercase;font:22px Anton}.file-select small{font:11px Space Mono}.import-actions{border-top:3px solid var(--ink);flex-wrap:wrap;justify-content:flex-end;gap:12px;padding:17px 22px;display:flex}.import-error{margin:0}.import-file-summary{border-bottom:3px solid var(--ink);align-items:center;gap:16px;padding:20px;display:flex}.import-file-icon{border:3px solid var(--ink);background:var(--blue);color:#fff;width:64px;height:64px;box-shadow:3px 3px 0 var(--ink);place-items:center;display:grid}.import-file-summary strong,.import-file-summary span:not(.eyebrow){display:block}.import-file-summary strong{text-transform:uppercase;font:24px Anton}.import-file-summary span:not(.eyebrow){margin-top:3px;font-size:16px}.import-summary-grid{grid-template-columns:repeat(5,minmax(0,1fr));padding:20px}.import-summary-grid .valid{background:var(--lime)}.import-summary-grid .invalid{color:#a00000;background:#ffd6d1}.import-summary-grid strong{font-size:38px}.import-categories{padding:0 20px 20px}.import-categories>div{flex-wrap:wrap;gap:8px;margin-top:9px;display:flex}.import-categories>div span{background:var(--ink);color:#fff;padding:6px 9px;font:11px Space Mono}.import-categories p{margin:8px 0 0}.import-errors{border:3px solid var(--ink);margin:0 20px 20px}.panel-head.red{background:var(--red);align-items:center;gap:8px;display:flex}.import-errors ul{max-height:180px;margin:0;padding:0;list-style:none;overflow:auto}.import-errors li{border-bottom:2px solid #e3e3e3;gap:14px;padding:11px 14px;display:flex}.import-errors li:last-child{border-bottom:0}.import-errors li strong{color:var(--red);white-space:nowrap;font:11px Space Mono}.import-errors li span{font-size:16px}.import-book-table-wrap{margin:0 20px 20px}.import-book-table-wrap .panel-head{border-bottom:3px solid var(--ink)}.import-book-table tr.has-issues{background:#fff0ee}.import-book-table td small svg{vertical-align:middle}.spin{animation:.9s linear infinite library-spin}@keyframes library-spin{to{transform:rotate(360deg)}}.book-cover-fallback{isolation:isolate;border:3px solid var(--ink);height:auto;min-height:350px;box-shadow:4px 4px 0 var(--ink);background:#fff;flex-direction:column;gap:12px;padding:14px;display:flex;position:relative;overflow:hidden}.book-cover-fallback:before{content:"";z-index:-2;background-image:radial-gradient(circle,#111 1.5px,#0000 1.7px);background-size:16px 16px;position:absolute;inset:0}.book-cover-geometry{z-index:-1;pointer-events:none;position:absolute;inset:0;overflow:hidden}.book-cover-geometry:before,.book-cover-geometry:after{content:"";border:3px solid var(--ink);display:block;position:absolute}.book-cover-geometry:before{background:var(--blue);width:30%;height:135%;top:-20%;left:17%;transform:rotate(15deg)}.book-cover-geometry:after{background:var(--yellow);width:78%;height:51%;top:-12%;right:-22%;transform:rotate(-25deg)}.book-card-cover{border-bottom:3px solid var(--ink);height:auto;min-height:210px}.book-card-cover.book-cover-image{object-fit:cover;height:210px}.book-card dl{grid-template-columns:repeat(3,minmax(0,1fr))}.book-card dd{max-width:none}.book-detail-cover.book-cover-fallback{height:auto;min-height:440px;box-shadow:none}.book-detail-cover.book-cover-image{height:440px}.book-cover-fallback.book-detail-cover .book-cover-title-panel strong{-webkit-line-clamp:5;font-size:48px;line-height:1.12}@media (width<=780px){.book-cover-brand{width:100%;font-size:28px}.book-cover-title-panel{min-height:120px;padding:18px 14px}.book-cover-title-panel strong{font-size:32px;line-height:1.12}.book-detail-cover.book-cover-fallback{min-height:390px}.book-detail-cover.book-cover-image{height:390px}.book-cover-fallback.book-detail-cover .book-cover-title-panel strong{font-size:38px}}.feed-book-attachment .feed-book-cover,.feed-book-attachment .feed-book-cover.book-cover-fallback,.feed-book-attachment .feed-book-cover.book-cover-image{object-fit:cover;overflow:hidden;aspect-ratio:3/4!important;flex:0 0 88px!important;width:88px!important;height:auto!important;min-height:0!important}.user-avatar,.user-avatar-small,.user-avatar-medium,.user-avatar-large{aspect-ratio:1;flex:none;overflow:hidden}.user-avatar>img,.user-avatar img{object-fit:cover;width:100%;height:100%;display:block}.avatar-crop-modal{width:min(560px,100%)}.avatar-crop-heading{justify-content:space-between;align-items:flex-start;gap:14px;margin-bottom:18px;display:flex}.avatar-crop-heading h2{margin:0;font:32px/1 Anton}.avatar-crop-stage{aspect-ratio:1;border:3px solid var(--ink);background:#e8e8e8;width:min(100%,420px);margin:0 auto 18px;position:relative;overflow:hidden}.avatar-crop-zoom{gap:8px;margin-bottom:18px;font:10px Space Mono;display:grid}.avatar-crop-zoom input{width:100%;accent-color:var(--blue)}@media (width<=780px){.library-hero,.collection-hero,.book-detail-panel{padding:20px}.library-hero h1,.collection-hero h1,.book-detail-content h1{font-size:39px}.library-hero p,.collection-hero p{font-size:18px}.library-collection-grid,.book-grid,.collection-hero,.book-detail-panel,.library-admin-stats,.import-summary-grid,.book-filter-panel{grid-template-columns:1fr}.collection-hero-stats{border:0;grid-template-columns:repeat(3,minmax(0,1fr))}.collection-hero-stats div{border:3px solid var(--ink);padding:10px}.collection-hero-stats strong{font-size:26px}.book-detail-cover{min-height:200px}.book-detail-facts{grid-template-columns:1fr}.import-summary-grid{padding:16px}.import-summary-grid>div{min-height:96px}.import-steps{grid-template-columns:1fr 1fr;display:grid}.import-steps div{min-width:0;font-size:9px}.import-file-summary{align-items:flex-start}.import-actions{justify-content:stretch}.import-actions .button{flex:1}.book-detail-cover.book-cover-fallback{min-height:390px}.book-detail-cover.book-cover-image{height:390px;min-height:390px}}.book-cover-fallback,.book-cover-image{aspect-ratio:3/4;height:auto;min-height:0}.book-cover-fallback{gap:12px;padding:14px;display:flex}.book-cover-brand{flex:none;width:100%}.book-cover-title-panel{flex:auto;min-height:0}.book-cover-title-panel strong{-webkit-line-clamp:5}.book-cover-author-panel{z-index:1;border:3px solid var(--ink);min-height:68px;box-shadow:4px 4px 0 var(--ink);background:#fff;flex-direction:column;flex:none;justify-content:center;gap:7px;padding:10px 12px;display:flex;position:relative}.book-cover-author-panel span{font:9px/1.15 Space Mono}.book-cover-author-panel strong{overflow-wrap:anywhere;-webkit-line-clamp:2;-webkit-box-orient:vertical;font:20px/1.15 Archivo Narrow;display:-webkit-box;overflow:hidden}.book-cover-compact{aspect-ratio:3/4;gap:7px;min-height:0;padding:8px}.book-cover-compact .book-cover-title-panel{min-height:0;padding:10px 9px}.book-cover-compact .book-cover-title-panel strong{-webkit-line-clamp:5;font-size:22px}.book-cover-compact .book-cover-author-panel{min-height:48px;box-shadow:2px 2px 0 var(--ink);gap:3px;padding:6px 7px}.book-cover-compact .book-cover-author-panel span{font-size:6px}.book-cover-compact .book-cover-author-panel strong{font-size:14px}.book-card-cover,.book-card-cover.book-cover-image,.book-detail-cover.book-cover-fallback,.book-detail-cover.book-cover-image{aspect-ratio:3/4;object-fit:cover;width:100%;height:auto;min-height:0}.book-detail-cover.book-cover-fallback .book-cover-title-panel strong{-webkit-line-clamp:6;font-size:48px;line-height:1.12}@media (width<=780px){.book-cover-brand{font-size:28px}.book-cover-title-panel{padding:16px 13px}.book-cover-title-panel strong{font-size:32px;line-height:1.12}.book-cover-author-panel strong{font-size:17px}.book-cover-compact .book-cover-title-panel strong{font-size:21px}.book-detail-cover.book-cover-fallback .book-cover-title-panel strong{font-size:36px}}*{box-sizing:border-box}body{background-color:#f9f9f9;background-image:radial-gradient(#111 1px,#0000 1px);background-size:20px 20px;margin:0;overflow-y:scroll}.library-collection-card{min-height:292px}.library-collection-card h2{text-transform:uppercase;margin:0;font:30px/1 Anton}.collection-stats{grid-template-columns:repeat(2,minmax(0,1fr));max-width:330px}.collection-stats strong{font-size:30px}.book-card-cover,.book-cover-image,.book-cover-fallback{border-bottom:3px solid var(--ink);width:100%;min-height:152px}.book-cover-image{object-fit:cover;background:#e8e8e8;display:block}.book-cover-fallback{isolation:isolate;color:var(--ink);background:#e8e8e8;grid-template-rows:auto 1fr auto auto;gap:8px;padding:12px;display:grid;position:relative;overflow:hidden}.book-cover-fallback:before{content:"";z-index:-1;border:3px solid var(--ink);background:var(--yellow);width:116px;height:116px;position:absolute;bottom:-32px;right:-36px;transform:rotate(18deg)}.book-cover-fallback>span{text-overflow:ellipsis;white-space:nowrap;background:var(--ink);color:#fff;width:max-content;max-width:100%;padding:5px 7px;font:10px Space Mono;overflow:hidden}.book-cover-fallback svg{place-self:center}.book-cover-fallback strong{text-transform:uppercase;max-height:3.15em;font:22px/1.05 Anton;overflow:hidden}.book-cover-fallback small{text-overflow:ellipsis;white-space:nowrap;font:10px Space Mono;overflow:hidden}.book-cover-compact{min-height:152px}.book-cover-literature{background:#ffd6d1}.book-cover-literature:before{background:var(--red)}.book-cover-science{background:#dce4ff}.book-cover-science:before{background:var(--blue)}.book-cover-children{background:#f5ffb8}.book-cover-children:before{background:var(--lime)}.book-cover-history{background:#fff2bf}.book-cover-history:before{background:var(--yellow)}.book-cover-skills{background:#ead9ff}.book-cover-skills:before{background:var(--purple)}.book-cover-generic{background:#e8e8e8}.book-detail-cover{border:3px solid var(--ink);width:100%;min-height:330px}.library-catalogue-controls,.admin-book-toolbar{border:3px solid var(--ink);box-shadow:4px 4px 0 var(--ink);background:#fff;flex-wrap:wrap;align-items:flex-end;gap:12px;padding:14px;display:flex}.library-catalogue-controls .collection-search,.admin-book-toolbar .collection-search{flex:320px;width:auto;min-height:46px}.catalogue-category{gap:6px;min-width:190px;font:10px Space Mono;display:grid}.catalogue-category select,.admin-book-toolbar select{border:3px solid var(--ink);background:#fff;border-radius:0;min-height:46px;padding:0 10px;font:16px Archivo Narrow}.catalogue-reset{border:3px solid var(--ink);min-height:46px;color:var(--ink);cursor:pointer;background:#fff;align-items:center;gap:6px;padding:0 12px;font:11px Space Mono;display:inline-flex}.catalogue-reset:hover,.icon-button:hover{background:var(--yellow)}.catalogue-loading{color:var(--blue);white-space:nowrap;flex:none;font:9px Space Mono}.book-grid-fetching{opacity:.68}.admin-header-actions,.admin-row-actions{flex-wrap:wrap;gap:8px;display:flex}.admin-row-actions .icon-button{cursor:pointer}.admin-action-link{border:3px solid var(--ink);min-height:34px;color:var(--ink);cursor:pointer;background:#fff;align-items:center;gap:5px;padding:6px 8px;font:10px Space Mono;text-decoration:none;display:inline-flex}.admin-action-link:hover{background:var(--yellow)}.admin-action-link.destructive:hover,.icon-button.destructive:hover{color:#a00000;background:#ffd6d1}.library-modal{max-height:min(88dvh,920px);overflow:auto}.library-modal-wide{width:min(800px,100%)}.library-modal-heading{justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:20px;display:flex}.library-modal-heading h2{margin:0}.library-form{gap:18px;display:grid}.library-form>label,.library-form-grid label{gap:7px;font:11px Space Mono;display:grid}.library-form input,.library-form textarea,.library-form-grid input{border:3px solid var(--ink);background:#fff;width:100%;min-height:44px;padding:9px 11px;font:18px Archivo Narrow}.library-form textarea{resize:vertical;min-height:94px}.library-form input:focus,.library-form textarea:focus{box-shadow:4px 4px 0 var(--blue);outline:0}.library-form-error{margin:0}.delete-modal-copy{align-items:flex-start;gap:14px;margin-bottom:20px;display:flex}.delete-modal-copy>span{border:3px solid var(--ink);background:#ffd6d1;flex:none;place-items:center;width:52px;height:52px;display:grid}.book-form-cover{border-bottom:3px solid var(--ink);grid-template-columns:160px minmax(0,1fr);gap:18px;padding-bottom:18px;display:grid}.book-form-cover .book-cover-fallback,.book-form-cover .book-cover-image{border:3px solid var(--ink);min-height:210px}.book-form-cover>div:last-child{align-content:center;gap:8px;display:grid}.book-form-cover>div:last-child strong{font:24px Anton}.book-form-cover>div:last-child span{font-size:16px}.book-cover-actions{flex-wrap:wrap;gap:10px;margin-top:6px;display:flex}.book-cover-actions .button{min-height:40px;padding:8px 12px;font-size:15px}.library-form-grid{grid-template-columns:1fr 1fr;gap:14px;display:grid}.form-span-2{grid-column:1/-1}.admin-collection-page{gap:22px;display:grid}.admin-collection-hero{border:3px solid var(--ink);box-shadow:4px 4px 0 var(--ink);background:#fff;justify-content:space-between;align-items:stretch;gap:20px;padding:25px;display:flex}.admin-collection-hero h1{text-transform:uppercase;margin:0;font:48px/1 Anton}.admin-collection-hero p{max-width:580px;margin:9px 0 0;font-size:18px}.admin-collection-hero>div:last-child{border-left:3px solid var(--ink);align-content:center;min-width:115px;padding-left:18px;display:grid}.admin-collection-hero>div:last-child strong{color:var(--blue);font:46px/1 Anton}.admin-collection-hero>div:last-child span{margin-top:5px;font:10px Space Mono}.admin-book-toolbar .button{min-height:46px;margin-left:auto}.admin-book-list{gap:14px;display:grid}.admin-book-row{border:3px solid var(--ink);min-height:164px;box-shadow:4px 4px 0 var(--ink);background:#fff;grid-template-columns:120px minmax(0,1fr) auto;align-items:stretch;gap:16px;padding:12px;display:grid}.admin-book-row .book-cover-fallback,.admin-book-row .book-cover-image{border:3px solid var(--ink);min-height:136px}.admin-book-copy{align-self:center;min-width:0}.admin-book-copy>span{background:var(--blue);color:#fff;text-transform:uppercase;padding:5px 7px;font:10px Space Mono;display:inline-block}.admin-book-copy h2{text-transform:uppercase;margin:10px 0 4px;font:27px/1 Anton}.admin-book-copy p{margin:0;font-size:18px;font-weight:700}.admin-book-copy small{color:#585d6b;margin-top:8px;font:10px Space Mono;display:block}.admin-book-row .admin-row-actions{align-self:start}.members-page,.member-detail-page{gap:22px;display:grid}.members-heading{margin:0}.member-stats{grid-template-columns:repeat(5,minmax(0,1fr));gap:12px;display:grid}.member-stat{border:3px solid var(--ink);min-height:118px;box-shadow:4px 4px 0 var(--ink);background:#fff;flex-direction:column;justify-content:space-between;padding:16px;display:flex}.member-stat span{font:10px Space Mono}.member-stat strong{font:42px/1 Anton}.member-stat.blue{background:var(--blue);color:#fff}.member-stat.yellow{background:var(--yellow)}.member-stat.purple{background:var(--purple);color:#fff}.member-filter-panel{border:3px solid var(--ink);background:var(--yellow);box-shadow:4px 4px 0 var(--ink);flex-wrap:wrap;align-items:stretch;gap:12px;padding:16px;display:flex}.member-search{border:3px solid var(--ink);background:#fff;flex:360px;align-items:center;gap:10px;min-height:48px;padding:0 12px;display:flex}.member-search input{border:0;outline:0;width:100%;min-width:0;font-size:18px}.member-search:focus-within{box-shadow:4px 4px 0 var(--blue)}.member-search small{color:var(--blue);flex:none;font:9px Space Mono}.member-filter-panel select{border:3px solid var(--ink);background:#fff;border-radius:0;min-width:190px;padding:0 10px;font:16px Archivo Narrow}.member-table-wrap{border:3px solid var(--ink);box-shadow:4px 4px 0 var(--ink);background:#fff;overflow-x:auto}.member-table{border-collapse:collapse;width:100%;min-width:920px}.member-table th{background:var(--blue);color:#fff;border-right:3px solid var(--ink);border-bottom:3px solid var(--ink);text-align:left;padding:13px;font:10px Space Mono}.member-table td{border-right:3px solid var(--ink);border-bottom:3px solid var(--ink);vertical-align:middle;padding:12px;font-size:16px}.member-table th:last-child,.member-table td:last-child{border-right:0}.member-table tr:last-child td{border-bottom:0}.member-table td strong,.member-table td small{display:block}.member-table td strong{text-transform:uppercase;font:23px/1 Anton}.member-table td small{color:#5c6170;margin-top:4px;font:10px Space Mono}.member-table .user-avatar-small{border:3px solid var(--ink);width:42px;height:42px;font-size:14px}.member-role-badge,.member-status{border:3px solid var(--ink);text-transform:uppercase;white-space:nowrap;padding:6px 8px;font:10px Space Mono;display:inline-block}.member-role-student{background:var(--lime)}.member-role-teacher{background:var(--blue);color:#fff}.member-role-admin{background:var(--purple);color:#fff}.member-status{border-width:0;padding:7px 9px}.member-status.active{background:var(--lime)}.member-status.inactive{color:#9b0000;background:#ffd6d1}.member-empty{min-height:360px}.member-detail-page-card{border:3px solid var(--ink);min-height:500px;box-shadow:4px 4px 0 var(--ink);background:#fff;align-content:start;gap:22px;padding:28px;display:grid}.member-detail-page-header{border-bottom:3px solid var(--ink);justify-content:space-between;align-items:flex-start;gap:18px;padding-bottom:18px;display:flex}.member-detail-page-header h1{text-transform:uppercase;margin:0;font:48px/1 Anton}.member-detail-page-header p{margin:7px 0 0;font:12px Space Mono}.member-detail-page-card>.viviora-modal{width:auto;box-shadow:none;border:0;padding:0}.member-detail-page-card>.viviora-modal .library-modal-heading{display:none}.member-detail-hero{border-bottom:3px solid var(--ink);align-items:center;gap:20px;padding-bottom:18px;display:flex}.member-detail-hero h1{text-transform:uppercase;margin:8px 0 0;font:40px/1 Anton}.member-detail-hero p{margin:6px 0 0;font:12px Space Mono}.member-detail-facts{border-top:3px solid var(--ink);border-left:3px solid var(--ink);grid-template-columns:repeat(2,minmax(0,1fr));margin:0;display:grid}.member-detail-facts div{border-right:3px solid var(--ink);border-bottom:3px solid var(--ink);min-height:78px;padding:12px}.member-detail-facts dt{color:#59606e;font:10px Space Mono}.member-detail-facts dd{margin:7px 0 0;font-size:18px;font-weight:700}.member-detail-actions{justify-content:flex-end;gap:12px;display:flex}.member-delete-warning{align-items:flex-start;gap:12px;margin-bottom:20px;display:flex}.member-delete-warning>svg{border:3px solid var(--ink);background:#ffd6d1;flex:none;width:50px;height:50px;padding:8px}.member-delete-warning p{margin:0;font-size:18px;line-height:1.4}.member-role-panel{border:3px solid var(--ink);box-shadow:4px 4px 0 var(--ink);background:#eee;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;padding:16px;display:grid}.member-role-panel label{gap:7px;font:11px Space Mono;display:grid}.member-role-panel input,.member-role-panel select{border:3px solid var(--ink);background:#fff;border-radius:0;width:100%;min-height:44px;padding:8px 10px;font:17px Archivo Narrow}.member-role-panel small{color:#5a6070;font:10px Space Mono}.member-status-field{grid-column:1/-1;max-width:calc(50% - 7px)}.member-form .library-form-grid select{border:3px solid var(--ink);background:#fff;border-radius:0;width:100%;min-height:44px;padding:8px 10px;font:17px Archivo Narrow}.member-form .library-form-grid input{min-height:44px}.member-form .library-form-grid input:disabled{color:#535763;cursor:not-allowed;background:#e8e8e8}.member-form .library-form-grid small{color:#5a6070;font:10px Space Mono}@media (width<=780px){.member-stats{grid-template-columns:1fr 1fr}.member-filter-panel select{flex:100%;min-width:0;min-height:46px}.member-detail-page-card{padding:18px}.member-detail-page-header{flex-direction:column}.member-detail-page-header h1{font-size:38px}.member-detail-hero{flex-direction:column;align-items:flex-start}.member-detail-facts,.member-role-panel{grid-template-columns:1fr}.member-status-field{grid-column:auto;max-width:none}.member-detail-actions{justify-content:stretch}.member-detail-actions .button{flex:1}.library-catalogue-controls,.admin-book-toolbar{align-items:stretch}.library-catalogue-controls .collection-search,.admin-book-toolbar .collection-search,.catalogue-category,.admin-book-toolbar select,.admin-book-toolbar .button{flex:100%;width:100%;margin-left:0}.book-form-cover,.library-form-grid,.admin-book-row{grid-template-columns:1fr}.book-form-cover .book-cover-fallback,.book-form-cover .book-cover-image{max-width:180px}.form-span-2{grid-column:auto}.admin-collection-hero{flex-direction:column}.admin-collection-hero>div:last-child{border-left:0;border-top:3px solid var(--ink);min-height:84px;padding:12px 0 0}.admin-book-row .book-cover-fallback,.admin-book-row .book-cover-image{max-width:130px}}.book-card>.book-card-cover,.book-card>.book-card-cover.book-cover-fallback,.book-card>.book-card-cover.book-cover-image,.admin-book-row>.book-cover-fallback,.admin-book-row>.book-cover-image,.book-form-cover>.book-cover-fallback,.book-form-cover>.book-cover-image,.book-detail-cover.book-cover-fallback,.book-detail-cover.book-cover-image{box-sizing:border-box;aspect-ratio:3/4;flex:none;width:100%;height:auto;min-height:0;overflow:hidden}.book-cover-fallback{flex-direction:column;gap:10px;padding:10px;display:flex}.book-cover-brand{flex:none;width:100%;min-height:34px;padding:6px 9px;font-size:24px}.book-cover-title-panel{flex:auto;align-items:center;min-height:0;padding:12px 10px;display:flex}.book-cover-title-panel strong{letter-spacing:0;overflow-wrap:anywhere;-webkit-line-clamp:5;-webkit-box-orient:vertical;max-height:none;font-size:26px;line-height:1.12;display:-webkit-box;overflow:hidden}.book-cover-author-panel{min-height:48px;box-shadow:2px 2px 0 var(--ink);flex:none;gap:4px;padding:7px 9px}.book-cover-author-panel span{font-size:7px}.book-cover-author-panel strong{font-size:15px}.book-card-cover.book-cover-fallback{box-shadow:none}.book-card-cover.book-cover-image{object-fit:cover}.book-detail-cover.book-cover-fallback{box-shadow:none}.book-detail-cover.book-cover-image{object-fit:cover}@media (width>=781px){.book-card-cover.book-cover-fallback .book-cover-title-panel strong{font-size:25px}}@media (width<=780px){.book-cover-brand{font-size:22px}.book-cover-title-panel strong{font-size:24px}.book-detail-cover.book-cover-fallback .book-cover-title-panel strong{font-size:34px}}button,input,textarea{font:inherit}.topbar{border-bottom:3px solid var(--ink);z-index:5;background:#fff;align-items:center;gap:30px;height:78px;padding:0 34px;display:flex;position:sticky;top:0}.wordmark{color:var(--blue);font:40px/1 Anton;text-decoration:none}.search{border:3px solid var(--ink);background:#fff;align-items:center;gap:9px;width:265px;height:46px;padding:0 12px;display:flex}.search input{background:0 0;border:0;outline:0;width:100%}.topnav{gap:28px;margin-left:auto;display:flex}.topnav a,.rail-nav a{text-transform:uppercase;color:#15182a;font:700 13px Space Mono;text-decoration:none}.topnav a.active{color:var(--blue)}.top-actions{gap:10px;display:flex}.top-actions a,.top-actions button{color:var(--ink);border:3px solid var(--ink);background:#fff;place-items:center;width:43px;height:43px;display:grid}.layout{grid-template-columns:274px minmax(0,760px) 300px;justify-content:space-between;gap:32px;width:100%;margin:0;padding:22px 20px 70px;display:grid}.rail{border:3px solid var(--ink);height:auto;max-height:calc(100vh - 122px);box-shadow:4px 4px 0 var(--ink);background:#fff;flex-direction:column;align-self:start;padding:16px;display:flex;position:sticky;top:100px;overflow-y:auto}.rail-nav{min-height:0}.profile-mini{border:3px solid var(--ink);box-shadow:4px 4px 0 var(--ink);background:#fff;align-items:center;gap:12px;padding:16px;display:flex}.profile-mini strong,.profile-mini span{display:block}.profile-mini strong{text-transform:uppercase;font:22px Anton}.profile-mini span{margin-top:3px;font:12px Space Mono}.avatar,.user-avatar-medium{border:3px solid var(--ink);background:var(--yellow);flex:none;place-items:center;width:48px;height:48px;font:17px Anton;display:grid}.user-avatar{border:3px solid var(--ink);background:var(--yellow);object-fit:cover;flex:none;place-items:center;width:48px;height:48px;font-family:Anton;display:grid;overflow:hidden}.user-avatar img,img.user-avatar{object-fit:cover;width:100%;height:100%;display:block}.user-avatar-small{border:0;width:40px;height:40px;font-size:15px}.user-avatar-medium{font-size:17px}.user-avatar-large{width:150px;height:150px;box-shadow:6px 6px 0 var(--ink);font-size:54px}.user-avatar[src]{object-fit:cover}.user-profile-link{padding:0;overflow:hidden}.rail-nav{gap:4px;margin-top:30px;display:grid}.rail-nav a{align-items:center;gap:15px;padding:15px 13px;display:flex}.rail-nav a.selected{color:#fff;background:var(--blue);box-shadow:4px 4px 0 var(--ink)}.content{min-width:0;padding-bottom:40px}.trending{border:3px solid var(--ink);height:max-content;box-shadow:4px 4px 0 var(--ink);background:#fff;align-self:start;position:sticky;top:100px;overflow:hidden}.right-rail{align-self:start;gap:18px;min-width:0;display:grid;position:sticky;top:100px}.right-rail .trending{position:static}.leaderboard-mini{border:3px solid var(--ink);box-shadow:4px 4px 0 var(--ink);background:#fff;overflow:hidden}.panel-head.yellow{background:var(--yellow);color:var(--ink)}.leaderboard-mini-row{min-width:0;color:var(--ink);border-bottom:2px solid #eee;align-items:center;gap:9px;padding:10px 12px;text-decoration:none;display:flex}.leaderboard-mini-row:hover{background:#fff8c8}.leaderboard-mini-row>strong{color:#a47700;flex:0 0 24px;font:20px/1 Anton}.leaderboard-mini-row>span{gap:3px;min-width:0;display:grid}.leaderboard-mini-row b{text-overflow:ellipsis;white-space:nowrap;font:700 13px/1.1 Archivo Narrow;overflow:hidden}.leaderboard-mini-row small{color:#606574;font:10px Space Mono}.leaderboard-more{border-top:0}.leaderboard-page{gap:20px;display:grid}.leaderboard-heading{background:var(--yellow);color:var(--ink)}.leaderboard-heading h1{margin:4px 0 0;font:52px/1 Anton}.leaderboard-heading p{max-width:620px;margin:10px 0 0;font-size:18px}.leaderboard-week-tabs{flex-wrap:wrap;gap:8px;display:flex}.leaderboard-week-tabs button{border:2px solid var(--ink);cursor:pointer;background:#fff;padding:9px 12px;font:10px Space Mono}.leaderboard-week-tabs button.selected{background:var(--yellow)}.leaderboard-podium{grid-template-columns:1fr 1.15fr 1fr;align-items:end;gap:14px;display:grid}.leaderboard-podium-card{border:3px solid var(--ink);color:var(--ink);text-align:center;box-shadow:4px 4px 0 var(--ink);background:#fff;justify-items:center;gap:8px;padding:22px 14px 18px;text-decoration:none;display:grid;position:relative}.leaderboard-podium-card.place-1{background:#fff8c8;min-height:280px}.leaderboard-podium-card.place-2,.leaderboard-podium-card.place-3{min-height:235px}.leaderboard-podium-card.place-2{order:-1}.leaderboard-podium-card strong{text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap;max-width:100%;font:24px/1.1 Anton;overflow:hidden}.leaderboard-podium-card>span:last-child{color:#606574;font:11px Space Mono}.leaderboard-podium-place{color:var(--blue);font:38px/1 Anton;position:absolute;top:10px;left:12px}.leaderboard-list{gap:8px;display:grid}.leaderboard-list-row{border:3px solid var(--ink);min-width:0;color:var(--ink);box-shadow:3px 3px 0 var(--ink);background:#fff;align-items:center;gap:13px;padding:12px 14px;text-decoration:none;display:flex}.leaderboard-list-row:hover{background:#fff8c8}.leaderboard-list-row>strong{color:var(--blue);flex:0 0 34px;font:26px/1 Anton}.leaderboard-list-row>span{gap:3px;min-width:0;display:grid}.leaderboard-list-row b{text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap;font:700 16px/1.1 Archivo Narrow;overflow:hidden}.leaderboard-list-row small{color:#606574;font:10px Space Mono}.leaderboard-list-row em{color:#a47700;white-space:nowrap;margin-left:auto;font:18px Anton}.moderation-tabs{flex-wrap:wrap;gap:8px;margin-bottom:16px;display:flex}.moderation-tabs button{border:2px solid var(--ink);cursor:pointer;background:#fff;padding:9px 12px;font:11px Space Mono}.moderation-tabs button.selected{background:var(--blue);color:#fff}.moderation-history-meta{border:2px solid var(--ink);background:#f3f3f3;border-bottom:0;flex-wrap:wrap;align-items:center;gap:10px;padding:9px 12px;font:11px Space Mono;display:flex}.moderation-history-meta.approved{background:#e9f8df}.moderation-history-meta.rejected{background:#ffe4df}.moderation-history-meta span,.moderation-history-meta time{color:#5d6270}.panel-head{background:var(--blue);color:#fff;padding:16px;font:25px Anton}.trend-book{min-width:0;color:var(--ink);border-bottom:2px solid #eee;align-items:center;gap:16px;padding:13px 14px;text-decoration:none;transition:background .16s,transform .16s;display:flex}.trend-book:hover{background:#fff8c8;transform:translate(2px)}.trend-book>b{color:var(--blue);flex:0 0 28px;font:20px/1 Anton}.trend-book>div>strong,.trend-book>div>span{display:block}.trend-title-static{white-space:nowrap;width:100%;color:var(--ink)!important;font:inherit!important;font-weight:inherit!important;text-transform:inherit!important;margin:0!important;display:inline-block!important}.trend-title-ticker{white-space:nowrap;width:100%;overflow:hidden;color:var(--ink)!important;font:inherit!important;font-weight:inherit!important;text-transform:inherit!important;margin:0!important;display:block!important}.trend-title-track{width:max-content;animation:12s linear infinite trend-marquee;display:inline-flex!important}.trend-title-track>span{color:var(--ink)!important;font:inherit!important;font-weight:inherit!important;text-transform:inherit!important;margin:0 42px 0 0!important;display:inline-block!important}@keyframes trend-marquee{0%{transform:translate(0)}to{transform:translate(-50%)}}.trend-more{border-top:2px solid var(--ink);color:var(--blue);text-align:center;padding:12px 14px;font:700 11px Space Mono;text-decoration:none;display:block}.trend-more:hover{background:var(--yellow)}.trending-books-page{gap:20px;display:grid}.trending-books-heading{color:var(--ink);box-shadow:4px 4px 0 var(--ink);background:#fff;justify-content:space-between;align-items:center;gap:20px;padding:25px;display:flex}.trending-books-heading h1{margin:4px 0 0;font:52px/1 Anton}.page-heading.trending-books-heading{color:var(--ink);background:#fff}.trending-books-heading p{max-width:560px;margin:10px 0 0;font-size:18px}.trending-books-list{gap:10px;display:grid}.trending-book-row{border:3px solid var(--ink);min-width:0;color:var(--ink);box-shadow:3px 3px 0 var(--ink);background:#fff;align-items:center;gap:18px;padding:16px 18px;text-decoration:none;display:flex}.trending-book-row:hover{background:#fff8c8;transform:translate(2px)}.trending-book-row>b{color:var(--blue);flex:0 0 42px;font:34px/1 Anton}.trending-book-row>div{min-width:0}.trending-book-row strong{text-transform:uppercase;color:var(--ink);font:21px/1.15 Anton;display:block;overflow:hidden}.trending-book-row>div>span{color:#596070;margin-top:5px;font-size:15px;display:block}.trending-book-row .trend-title-ticker{font:inherit!important}.trend-empty{align-content:center;gap:8px;min-height:145px;padding:24px 18px;display:grid}.trend-empty strong{font:16px Anton}.trend-empty span{font-size:16px;line-height:1.35}.trend-book>div>strong{text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap;font:700 14px/1.15 Archivo Narrow;overflow:hidden}.trend-book>div>span{color:#4d5160;text-overflow:ellipsis;white-space:nowrap;margin-top:3px;font-size:13px;overflow:hidden}.page-heading,.composer,.post-card,.state-card,.placeholder,.login-card,.moderation-card{border:3px solid var(--ink);box-shadow:4px 4px 0 var(--ink);background:#fff}.page-heading{justify-content:space-between;align-items:end;gap:20px;margin-bottom:22px;padding:25px;display:flex}.eyebrow{letter-spacing:.08em;margin-bottom:9px;font:700 11px Space Mono;display:block}.page-heading h1,.placeholder h1,.login-card h1{text-transform:uppercase;margin:0;font:48px/1 Anton}.page-heading p,.placeholder p{max-width:560px;margin:12px 0 0;font-size:19px}.button{border:3px solid var(--ink);box-shadow:4px 4px 0 var(--ink);cursor:pointer;justify-content:center;align-items:center;gap:8px;min-height:45px;padding:10px 18px;font:17px Anton;text-decoration:none;display:inline-flex}.button.primary{background:var(--blue);color:#fff}.button.secondary{background:#fff}.button.danger{background:var(--red);color:#fff;margin-left:12px}.button:disabled{cursor:wait;opacity:.6}.composer{align-items:flex-start;gap:15px;margin-bottom:24px;padding:20px;display:flex}.composer-input{text-align:left;color:#727787;cursor:text;background:#fafafa;border:3px solid #6e7481;flex:1;height:58px;padding:0 16px}.composer-form{flex:1}.composer-form textarea{border:3px solid var(--ink);resize:vertical;width:100%;min-height:110px;padding:12px}.composer-actions{justify-content:flex-end;gap:10px;margin-top:12px;display:flex}.feed-list,.moderation-list{gap:26px;display:grid}.post-band{color:#fff;justify-content:space-between;padding:9px 15px;font:700 13px Space Mono;display:flex}.post-band.red{background:var(--red)}.post-band.purple{background:var(--purple)}.post-band.yellow{background:var(--yellow);color:var(--ink)}.post-body{padding:20px}.post-author{align-items:center;gap:12px;display:flex}.post-author strong,.post-author span{display:block}.post-author strong{text-transform:uppercase;font:20px Anton}.post-author-name{color:var(--ink);text-transform:uppercase;font:20px Anton;text-decoration:none;display:block}.post-author span{color:#4d5160;font:12px Space Mono}.more{cursor:pointer;background:#fff;border:0;place-items:center;margin-left:auto;font:20px Space Mono;display:grid;position:relative}.more>button{color:var(--ink);cursor:pointer;background:#fff;border:0;place-items:center;padding:0;display:grid}.post-menu{z-index:4;border:3px solid var(--ink);box-shadow:4px 4px 0 var(--ink);background:#fff;padding:5px;position:absolute;top:30px;right:0}.post-menu button{color:var(--red);white-space:nowrap;cursor:pointer;background:#fff;border:0;align-items:center;gap:6px;padding:8px 10px;font:11px Space Mono;display:flex}.post-menu button:hover{background:#ffd6d1}.post-card h2,.moderation-card h2{text-transform:uppercase;margin:20px 0 8px;font:34px/1 Anton}.post-copy,.moderation-card p{font-size:20px;line-height:1.45}.book-attachment{color:var(--ink);background:#f1f1f1;align-items:center;gap:18px;padding:16px;text-decoration:none;display:flex}.post-book-cover{flex:0 0 76px!important;width:76px!important}.book-cover{border:3px solid var(--ink);background-color:#d9d9d9;background-position:50%;background-size:cover;width:94px;height:133px}.book-attachment h3{text-transform:uppercase;margin:7px 0 2px;font:29px Anton}.book-attachment p{margin:0}.tag{background:var(--ink);color:#fff;text-transform:uppercase;padding:5px 7px;font:11px Space Mono}.stars{color:#e0e000;letter-spacing:2px;margin-top:7px;font-size:28px;display:block}.poll-options{border-top:3px solid var(--ink);padding-top:18px}.poll-options h3{text-transform:uppercase;font:24px Anton}.poll-option{border:3px solid var(--ink);text-align:left;background:#fff;align-items:center;gap:10px;width:100%;min-height:50px;margin:10px 0;padding:0 13px;font:16px Space Mono;display:flex;position:relative;overflow:hidden}.poll-option.voted:before{content:"";background:var(--lime);width:48%;position:absolute;inset:0 auto 0 0}.poll-option span,.poll-option small,.poll-option i{z-index:1;position:relative}.poll-option small{margin-left:auto}.poll-option i{border:3px solid var(--ink);border-radius:50%;width:20px;height:20px}.post-actions{border-top:3px solid var(--ink);display:flex}.post-actions button{border:0;border-right:3px solid var(--ink);cursor:pointer;background:#fff;flex:1;justify-content:center;align-items:center;gap:7px;padding:15px 8px;font:12px Space Mono;display:flex}.post-actions button:last-child{border-right:0}.post-actions .liked{color:#e13a21}.post-comments{border-top:3px solid var(--ink);background:#f3f3f3;padding:14px 20px 20px}.comments-list{gap:12px;margin-bottom:14px;display:grid}.comment-row{align-items:flex-start;gap:10px;display:flex}.comment-row strong{text-transform:uppercase;font:14px Anton}.comment-row p{margin:3px 0 0;font-size:16px}.post-comments form{gap:8px;display:flex}.post-comments form input{border:3px solid var(--ink);background:#fff;flex:1;min-width:0;padding:9px 11px}.public-profile-page{gap:22px;display:grid}.public-profile-hero{border:3px solid var(--ink);box-shadow:4px 4px 0 var(--ink);background:#fff;align-items:center;gap:22px;padding:26px;display:flex}.public-profile-hero h1{text-transform:uppercase;margin:0;font:48px/1 Anton}.public-profile-hero p{margin:7px 0 0;font-size:19px}.profile-public-tag{border:3px solid var(--ink);background:var(--yellow);margin-top:10px;padding:6px 8px;font:10px Space Mono;display:inline-block}.public-profile-posts{gap:16px;display:grid}.public-profile-posts>.panel-head{align-items:center;gap:8px;display:flex}.profile-password{overflow:hidden}.profile-password-form{grid-template-columns:repeat(3,1fr);gap:14px;padding:20px;display:grid}.profile-password-form label{gap:7px;font:10px Space Mono;display:grid}.profile-password-form input{border:3px solid var(--ink);min-height:44px;padding:8px 10px;font-size:17px}.profile-password-form input:focus{box-shadow:4px 4px 0 var(--blue);outline:0}.profile-password-form .profile-form-actions,.profile-password-form .form-error,.profile-password-form .password-success{grid-column:1/-1}.password-success{color:#086b20;margin:0;font:12px Space Mono}.composer-mode{gap:8px;margin-bottom:10px;display:flex}.composer-mode button{border:3px solid var(--ink);cursor:pointer;background:#fff;align-items:center;gap:5px;padding:7px 9px;font:10px Space Mono;display:inline-flex}.composer-mode button.selected{background:var(--blue);color:#fff;box-shadow:3px 3px 0 var(--ink)}.composer-book-picker{gap:8px;margin-top:10px;display:grid}.composer-book-picker>input{border:3px solid var(--ink);padding:9px 11px}.composer-book-picker>button,.composer-selected-book{border:3px solid var(--ink);text-align:left;cursor:pointer;background:#fff;align-items:center;gap:10px;padding:7px;display:flex}.composer-book-picker>button .book-cover-fallback,.composer-selected-book .book-cover-fallback{flex:0 0 42px!important;width:42px!important}.composer-book-picker>button span,.composer-selected-book>span{text-transform:uppercase;font:15px Anton;display:grid}.composer-book-picker small,.composer-selected-book small{text-transform:none;margin-top:3px;font:11px Archivo Narrow}.state-card,.placeholder{text-align:center;padding:35px}.empty-state h2{margin:8px 0;font:34px/1 Anton}.empty-state p{max-width:520px;margin:0 auto;font-size:19px;line-height:1.45}.placeholder{flex-direction:column;justify-content:center;align-items:center;min-height:290px;margin-top:70px;display:flex}.login-page{place-items:center;min-height:100vh;padding:24px;display:grid}.auth-back{color:var(--ink);align-items:center;gap:6px;font:10px Space Mono;text-decoration:none;display:inline-flex}.auth-back:hover{color:var(--blue)}.auth-switch{text-align:center;margin:4px 0 0;font:11px Space Mono}.auth-switch a{color:var(--blue);font-weight:700}.register-card{border:3px solid var(--ink);width:min(680px,100%);box-shadow:6px 6px 0 var(--ink);background:#fff;gap:14px;padding:30px;display:grid}.register-card h1{text-transform:uppercase;color:var(--blue);margin:0;font:48px/1 Anton}.register-intro{max-width:520px;margin:0 0 4px;font-size:17px}.register-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:13px;display:grid}.register-grid label,.register-label{text-transform:uppercase;gap:6px;font:700 11px Space Mono;display:grid}.register-grid input,.register-grid select{border:3px solid var(--ink);text-transform:none;background:#fff;width:100%;min-height:43px;padding:9px 10px;font:16px Archivo Narrow}.register-grid input:focus,.register-grid select:focus{box-shadow:4px 4px 0 var(--blue);outline:0}.register-wide{grid-column:1/-1}.optional{color:#666;font-size:9px}.role-switch{grid-template-columns:1fr 1fr;gap:8px;margin-top:6px;display:grid}.role-switch button{border:3px solid var(--ink);cursor:pointer;background:#fff;min-height:43px;font:12px Space Mono}.role-switch button.selected{color:#fff;background:var(--blue);box-shadow:3px 3px 0 var(--ink)}.register-submit{width:100%;margin-top:4px}.landing-page{background:#f9f9f9;min-height:100vh;overflow:hidden}.landing-header{border-bottom:3px solid var(--ink);align-items:center;gap:28px;width:min(1240px,100% - 48px);min-height:78px;margin:0 auto;display:flex}.landing-header .wordmark{color:var(--blue);font:34px Anton;text-decoration:none}.landing-header nav{gap:22px;margin-left:auto;display:flex}.landing-header nav a,.landing-login{color:var(--ink);font:10px Space Mono;text-decoration:none}.landing-header nav a:hover,.landing-login:hover{color:var(--blue)}.landing-header-actions{align-items:center;gap:15px;display:flex}.landing-header .button{min-height:39px;padding:8px 13px;font-size:15px}.landing-hero{grid-template-columns:minmax(0,1fr) minmax(420px,.9fr);align-items:center;gap:40px;width:min(1240px,100% - 48px);min-height:650px;margin:0 auto;padding:72px 0 80px;display:grid}.landing-hero-copy h1{letter-spacing:.01em;text-transform:uppercase;color:var(--ink);gap:3px;margin:0;font:clamp(65px,8vw,118px)/1.08 Anton;display:grid}.landing-hero-copy h1>span{min-height:1.08em;padding-bottom:.06em;display:block}.landing-hero-copy h1 em{color:var(--blue);font-style:normal}.landing-hero-copy>p{max-width:570px;margin:26px 0 0;font-size:21px;line-height:1.4}.landing-hero-actions{flex-wrap:wrap;gap:12px;margin-top:28px;display:flex}.landing-proof{border-top:3px solid var(--ink);flex-wrap:wrap;gap:22px;margin-top:34px;padding-top:18px;font:10px Space Mono;display:flex}.landing-proof span{gap:3px;display:grid}.landing-proof strong{color:var(--blue);font:25px Anton}.landing-hero-art{border:3px solid var(--ink);background:var(--yellow);min-height:500px;box-shadow:8px 8px 0 var(--ink);position:relative;overflow:hidden}.landing-art-grid{background-image:linear-gradient(#11111126 1px,#0000 1px),linear-gradient(90deg,#11111126 1px,#0000 1px);background-size:28px 28px;position:absolute;inset:0}.landing-book{border:3px solid var(--ink);box-shadow:5px 5px 0 var(--ink);align-content:space-between;padding:17px;display:grid;position:absolute;transform:rotate(-7deg)}.landing-book small,.landing-book span,.landing-art-label{font:10px Space Mono}.landing-book strong{font:35px/.9 Anton}.landing-book-a{background:var(--blue);color:#fff;width:185px;height:300px;top:15%;left:13%}.landing-book-b{background:#fff;width:175px;height:270px;top:11%;right:12%;transform:rotate(8deg)}.landing-book-c{background:var(--red);color:#fff;width:190px;height:285px;bottom:6%;right:24%;transform:rotate(-2deg)}.landing-art-sticker{border:3px solid var(--ink);background:var(--lime);text-align:center;border-radius:50%;place-items:center;width:104px;height:104px;font:13px/1 Space Mono;display:grid;position:absolute;bottom:18%;left:7%;transform:rotate(-12deg)}.landing-art-sticker b{font-size:24px}.landing-art-label{text-align:right;position:absolute;bottom:16px;right:18px}.landing-art-label span{color:var(--blue);font-weight:700}.landing-section{border-top:3px solid var(--ink);width:min(1240px,100% - 48px);margin:0 auto;padding:100px 0}.landing-section-heading h2,.landing-community-note h2,.landing-achievements h2,.landing-final h2{text-transform:uppercase;margin:0;padding-bottom:.04em;font:clamp(45px,6vw,82px)/1.08 Anton}.landing-section-heading h2 span,.landing-community-note h2 span,.landing-achievements h2 span,.landing-final h2 span{color:var(--blue)}.landing-shelf-grid{grid-template-columns:repeat(3,1fr);gap:14px;margin-top:45px;display:grid}.landing-shelf{border:3px solid var(--ink);min-height:255px;box-shadow:5px 5px 0 var(--ink);flex-direction:column;padding:20px;display:flex}.landing-shelf-blue{background:var(--blue);color:#fff}.landing-shelf-yellow{background:var(--yellow)}.landing-shelf-red{background:var(--red);color:#fff}.landing-shelf-index{margin-bottom:30px;font:11px Space Mono}.landing-shelf h3{margin:18px 0 5px;font:38px Anton}.landing-shelf p{margin:0;font-size:17px}.landing-shelf a{color:inherit;align-items:center;gap:6px;margin-top:auto;font:11px Space Mono;text-decoration:none;display:flex}.landing-community{grid-template-columns:1fr .85fr;align-items:center;gap:70px;display:grid}.landing-community-note>p{max-width:470px;margin:23px 0;font-size:19px;line-height:1.45}.landing-post-preview{border:3px solid var(--ink);box-shadow:8px 8px 0 var(--ink);background:#fff;transform:rotate(2deg)}.landing-post-band{background:var(--purple);color:#fff;padding:10px 14px;font:11px Space Mono}.landing-post-band span{float:right}.landing-post-body{padding:22px}.landing-avatar{float:left;border:3px solid var(--ink);background:var(--lime);place-items:center;width:42px;height:42px;margin-right:10px;font:24px Anton;display:grid}.landing-post-body strong,.landing-post-body small{display:block}.landing-post-body strong{font:18px Anton}.landing-post-body small{font:10px Space Mono}.landing-post-body p{clear:both;margin:0;padding-top:28px;font-size:23px;line-height:1.25}.landing-post-tags{border-top:3px solid var(--ink);justify-content:space-between;margin-top:28px;padding-top:12px;font:10px Space Mono;display:flex}.landing-achievements{grid-template-columns:.8fr 1.2fr;align-items:start;gap:65px;display:grid}.landing-achievement-points{grid-template-columns:repeat(3,1fr);gap:10px;display:grid}.landing-achievement-points>div{border:3px solid var(--ink);background:#fff;flex-direction:column;gap:10px;min-height:180px;padding:16px;display:flex}.landing-achievement-points strong{margin-top:auto;font:23px Anton}.landing-achievement-points span{font:11px Space Mono}.landing-final{background:var(--blue);color:#fff;text-align:center;padding:115px 24px}.landing-final .eyebrow,.landing-final h2 span{color:var(--lime)}.landing-final .button{background:var(--lime);color:var(--ink);margin-top:30px}.landing-footer{justify-content:space-between;align-items:center;gap:15px;width:min(1240px,100% - 48px);min-height:76px;margin:0 auto;font:10px Space Mono;display:flex}.landing-footer .wordmark{color:var(--blue);font:25px Anton}@media (width<=800px){.landing-header nav{display:none}.landing-header{width:min(100% - 30px,1240px)}.landing-header-actions{margin-left:auto}.landing-login{display:none}.landing-hero,.landing-section{width:min(100% - 30px,1240px)}.landing-hero{grid-template-columns:1fr;padding-top:50px}.landing-hero-art{min-height:430px}.landing-shelf-grid,.landing-community,.landing-achievements,.landing-achievement-points{grid-template-columns:1fr}.landing-post-preview{width:100%;max-width:560px;margin:0 auto}.landing-footer{flex-wrap:wrap;width:calc(100% - 30px);padding:18px 0}.landing-footer span:last-child{margin-left:auto}}@media (width<=640px){.register-card{padding:22px 16px}.register-grid{grid-template-columns:1fr}.register-wide{grid-column:auto}.landing-header .wordmark{font-size:29px}.landing-header .button{padding-inline:10px;font-size:13px}.landing-hero-copy h1{font-size:64px;line-height:1.1}.landing-hero-copy h1>span{min-height:1.1em}.landing-hero-copy>p{font-size:18px}.landing-hero-art{min-height:390px}.landing-book-a{width:145px;height:235px}.landing-book-b{width:135px;height:215px}.landing-book-c{width:150px;height:225px;right:13%}.landing-book strong{font-size:27px}.landing-art-sticker{width:84px;height:84px;font-size:11px}.landing-section{padding:70px 0}.landing-post-body p{font-size:20px}}.login-card{gap:14px;width:min(440px,100%);padding:36px;display:grid}.login-card label{text-transform:uppercase;font:700 13px Space Mono}.login-card input{border:3px solid var(--ink);width:100%;margin-top:6px;padding:12px;display:block}.moderation-card{padding:22px}.moderation-card small{font-family:Space Mono}.moderation-card div{margin-top:18px}.feed-sentinel{text-align:center;padding:25px;font:12px Space Mono}.error{color:#b50000}.profile-page{gap:24px;display:grid}.profile-hero{border:3px solid var(--ink);box-shadow:4px 4px 0 var(--ink);background:#fff;justify-content:space-between;align-items:center;gap:24px;padding:26px;display:flex}.profile-identity{align-items:center;gap:22px;display:flex}.profile-avatar{border:3px solid var(--ink);background:var(--yellow);width:150px;height:150px;box-shadow:6px 6px 0 var(--ink);place-items:center;font:54px Anton;display:grid}.profile-hero h1{text-transform:uppercase;margin:0 0 10px;font:52px/1 Anton}.profile-hero p{max-width:600px;margin:14px 0 0;font-size:20px}.profile-tags{flex-wrap:wrap;gap:8px;display:flex}.profile-tags span{background:var(--ink);color:#fff;text-transform:uppercase;padding:6px 10px;font:12px Space Mono}.profile-tags span+span{background:var(--blue)}.profile-stats{grid-template-columns:repeat(4,1fr);gap:16px;display:grid}.profile-stat{border:3px solid var(--ink);box-shadow:4px 4px 0 var(--ink);text-align:center;background:#fff;place-items:center;gap:7px;padding:18px;display:grid}.profile-stat strong{font:42px Anton}.profile-stat span{font:11px Space Mono}.profile-columns{grid-template-columns:1fr 1fr;gap:24px;display:grid}.profile-panel{border:3px solid var(--ink);box-shadow:4px 4px 0 var(--ink);background:#fff}.profile-panel dl{gap:16px;margin:0;padding:20px;display:grid}.profile-panel dl div{border-bottom:2px solid #ddd;padding-bottom:12px}.profile-panel dt{color:#5d6270;font:10px Space Mono}.profile-panel dd{margin:5px 0 0;font-size:19px;font-weight:700}.profile-security{justify-content:space-between;align-items:center;gap:20px;padding:20px;display:flex}.profile-logout{margin-top:12px;padding:0;overflow:hidden}.profile-logout .panel-head{background:var(--red)}.profile-security-body{justify-content:space-between;align-items:center;gap:20px;padding:20px;display:flex}.profile-security-body .button.danger{margin-left:0}.profile-security strong,.profile-security p{margin:0;display:block}.profile-security-body>div>strong{text-transform:uppercase;font:23px Anton}.feed-page{gap:20px;min-width:0;display:grid}.feed-heading{margin:0}.feed-post-list{gap:20px;min-width:0;display:grid}.feed-post{border:3px solid var(--ink);min-width:0;box-shadow:4px 4px 0 var(--ink);background:#fff;overflow:visible}.feed-post-band{color:#fff;justify-content:space-between;align-items:center;gap:12px;min-height:40px;padding:9px 14px;font:700 11px Space Mono;display:flex}.feed-post-band time{flex:none;font-size:10px;font-weight:400}.feed-band-purple{background:var(--purple)}.feed-band-red{background:var(--red)}.feed-band-yellow{background:var(--yellow);color:var(--ink)}.feed-post-body{min-width:0;padding:18px}.feed-post-author{align-items:center;gap:11px;min-width:0;display:flex}.feed-author-avatar{flex:0 0 48px;width:48px;height:48px;display:block}.feed-author-avatar .user-avatar{width:48px;height:48px}.feed-author-copy{gap:3px;min-width:0;display:grid}.feed-author-name{color:var(--ink);text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap;font:20px/1.05 Anton;text-decoration:none;overflow:hidden}.feed-author-copy>span{color:#555b68;text-overflow:ellipsis;white-space:nowrap;font:10px Space Mono;overflow:hidden}.feed-post-menu{flex:none;margin-left:auto;position:relative}.feed-post-menu>button{width:38px;height:38px;color:var(--ink);cursor:pointer;background:#fff;border:3px solid #0000;place-items:center;display:grid}.feed-post-menu>button:hover{border-color:var(--ink);background:var(--yellow)}.feed-post-menu-popover{z-index:8;border:3px solid var(--ink);box-shadow:4px 4px 0 var(--ink);background:#fff;padding:4px;position:absolute;top:42px;right:0}.feed-post-menu-popover button{min-width:120px;color:var(--red);cursor:pointer;white-space:nowrap;background:#fff;border:0;align-items:center;gap:7px;padding:9px 10px;font:10px Space Mono;display:flex}.feed-post-menu-popover button:hover{background:#ffd6d1}.feed-post-title{text-transform:uppercase;overflow-wrap:anywhere;margin:18px 0 8px;font:32px/1.04 Anton}.feed-post-content{overflow-wrap:anywhere;white-space:pre-wrap;margin:0;font-size:18px;line-height:1.45}.feed-post-media{gap:12px;margin-top:18px;display:grid}.feed-post-media img{border:3px solid var(--ink);object-fit:contain;background:#f1f1f1;width:100%;max-height:640px;display:block}.feed-book-attachment{border:3px solid var(--ink);min-width:0;color:var(--ink);background:#f1f1f1;align-items:center;gap:14px;margin-top:18px;padding:12px;text-decoration:none;display:flex}.feed-book-attachment:hover{background:#e8e8e8}.feed-book-cover{aspect-ratio:3/4!important;width:88px!important;height:auto!important;min-height:0!important;box-shadow:none!important;flex:0 0 88px!important}.feed-book-copy{gap:5px;min-width:0;display:grid}.feed-book-label{background:var(--ink);color:#fff;text-overflow:ellipsis;white-space:nowrap;width:max-content;max-width:100%;padding:5px 7px;font:9px Space Mono;overflow:hidden}.feed-book-copy h3{text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap;margin:0;font:23px/1.05 Anton;overflow:hidden}.feed-book-copy p{text-overflow:ellipsis;white-space:nowrap;margin:0;font-size:16px;overflow:hidden}.feed-poll{border-top:3px solid var(--ink);margin-top:18px;padding-top:14px}.feed-poll h3{text-transform:uppercase;margin:0 0 10px;font:23px/1.1 Anton}.feed-poll-option{border:3px solid var(--ink);background:#fff;justify-content:space-between;align-items:center;gap:12px;min-height:42px;margin-top:8px;padding:8px 10px;font:14px Archivo Narrow;display:flex}.feed-poll-option small{flex:none;font:9px Space Mono}.feed-post-actions{border-top:3px solid var(--ink);grid-template-columns:1fr 1fr;min-height:48px;display:grid}.feed-post-actions button{border:0;border-right:3px solid var(--ink);min-width:0;color:var(--ink);cursor:pointer;background:#fff;justify-content:center;align-items:center;gap:7px;font:11px Space Mono;display:flex}.feed-post-actions button:last-child{border-right:0}.feed-post-actions button:hover{background:var(--yellow)}.feed-post-actions button.is-liked{color:var(--red)}.feed-post-actions button:disabled{cursor:wait;opacity:.6}.moderation-post-actions button{min-height:52px;font:17px Anton;transition:background-color .18s,color .18s,transform .12s}.moderation-post-actions button:hover{background:#fff}.moderation-post-actions button:active{transform:translateY(2px)}.moderation-post-actions .moderation-action-reject{color:var(--red)}.moderation-post-actions .moderation-action-reject:hover{background:#ffd6d1}.moderation-post-actions .moderation-action-approve{color:var(--green)}.moderation-post-actions .moderation-action-approve:hover{background:#d9f5df}.moderation-post-actions button:focus-visible{outline:3px solid var(--blue);outline-offset:-6px}.feed-comments{border-top:3px solid var(--ink);background:#f3f3f3;padding:14px 18px 18px}.feed-comments-list{gap:12px;margin-bottom:14px;display:grid}.feed-comment{align-items:flex-start;gap:9px;display:flex}.feed-comment>div{min-width:0}.feed-comment strong{text-transform:uppercase;font:14px Anton;display:block}.feed-comment p{overflow-wrap:anywhere;margin:3px 0 0;font-size:15px}.feed-comment-form{gap:8px;display:flex}.feed-comment-form input{border:3px solid var(--ink);background:#fff;flex:1;min-width:0;height:42px;padding:8px 10px;font-size:16px}.feed-comment-form input:focus{box-shadow:4px 4px 0 var(--blue);outline:0}.feed-comment-form .icon-button{flex:0 0 42px}.feed-composer{border:3px solid var(--ink);min-width:0;box-shadow:4px 4px 0 var(--ink);background:#fff;align-items:flex-start;gap:12px;padding:16px;display:flex}.feed-composer-form{flex:1;min-width:0}.feed-composer-trigger{color:#727787;text-align:left;cursor:text;background:#fafafa;border:3px solid #6e7481;flex:1;min-width:0;height:52px;padding:0 14px}.feed-composer-mode{flex-wrap:wrap;gap:8px;margin-bottom:10px;display:flex}.feed-composer-mode button{border:3px solid var(--ink);cursor:pointer;background:#fff;align-items:center;gap:5px;min-height:32px;padding:6px 9px;font:10px Space Mono;display:inline-flex}.feed-composer-mode button.selected{background:var(--blue);color:#fff;box-shadow:3px 3px 0 var(--ink)}.feed-composer-form textarea{border:3px solid var(--ink);resize:vertical;width:100%;min-height:108px;padding:11px;font-size:18px}.feed-composer-form textarea:focus{box-shadow:4px 4px 0 var(--blue);outline:0}.feed-composer-actions{justify-content:flex-end;gap:9px;margin-top:10px;display:flex}.feed-composer-book-picker{gap:8px;margin-top:10px;display:grid}.feed-composer-book-picker>input{border:3px solid var(--ink);min-height:42px;padding:8px 10px;font-size:16px}.feed-composer-book-picker>button,.feed-composer-selected-book{border:3px solid var(--ink);text-align:left;cursor:pointer;background:#fff;align-items:center;gap:9px;min-width:0;padding:7px;display:flex}.feed-composer-book-picker>button:hover{background:var(--yellow)}.feed-composer-book-picker .book-cover-fallback,.feed-composer-selected-book .book-cover-fallback{aspect-ratio:3/4!important;width:44px!important;min-height:0!important;box-shadow:none!important;flex:0 0 44px!important}.feed-composer-book-picker>button>span,.feed-composer-selected-book>span{text-overflow:ellipsis;text-transform:uppercase;min-width:0;font:14px Anton;display:grid;overflow:hidden}.feed-composer-book-picker small,.feed-composer-selected-book small{text-overflow:ellipsis;text-transform:none;white-space:nowrap;font:12px Archivo Narrow;overflow:hidden}@media (width<=780px){.feed-composer{flex-direction:column;align-items:stretch}.feed-composer>.user-avatar{align-self:flex-start}.feed-composer-trigger{width:100%}.feed-post-body{padding:14px}.feed-post-title{font-size:28px}.feed-book-attachment{align-items:flex-start}.feed-book-cover{flex-basis:72px!important;width:72px!important}.feed-book-copy h3{white-space:normal;font-size:19px}.feed-book-copy p{white-space:normal}}.moderation-page{gap:24px;min-width:0;display:grid}.moderation-heading{border-bottom:3px solid var(--ink);padding-bottom:18px}.moderation-heading h1{text-transform:uppercase;margin:0;font:48px/1 Anton}.moderation-heading p{margin:10px 0 0;font-size:19px}.moderation-stats{grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;display:grid}.moderation-stat{border:3px solid var(--ink);min-height:128px;box-shadow:4px 4px 0 var(--ink);background:#fff;flex-direction:column;justify-content:space-between;padding:18px;display:flex}.moderation-stat span{font:11px Space Mono}.moderation-stat strong{color:var(--blue);font:52px/1 Anton}.moderation-stat.approved strong{color:var(--ink)}.moderation-stat.rejected{background:#ffd6d1}.moderation-stat.rejected span,.moderation-stat.rejected strong{color:var(--red)}.moderation-layout{grid-template-columns:240px minmax(0,1fr);align-items:start;gap:24px;display:grid}.moderation-filters{border:3px solid var(--ink);box-shadow:4px 4px 0 var(--ink);background:#fff;gap:18px;padding:18px;display:grid;position:sticky;top:100px}.moderation-filters h2,.moderation-queue>h2{border-bottom:3px solid var(--ink);text-transform:uppercase;margin:0;padding-bottom:10px;font:25px/1 Anton}.moderation-filters label{gap:7px;font:10px Space Mono;display:grid}.moderation-filters select{border:3px solid var(--ink);background:#fff;border-radius:0;min-height:42px;padding:7px 9px;font:16px Archivo Narrow}.moderation-filters .button{min-height:42px;font-size:14px}.moderation-queue{gap:16px;min-width:0;display:grid}.moderation-empty{margin-top:0}.moderation-post-list{gap:20px}.moderation-confirm-copy{color:var(--red);align-items:flex-start;gap:12px;margin-bottom:18px;display:flex}.moderation-confirm-copy p{color:var(--ink)}@media (width<=780px){.moderation-heading h1{font-size:38px}.moderation-stats,.moderation-layout{grid-template-columns:1fr}.moderation-filters{position:static}}.profile-security strong{text-transform:uppercase;font:23px Anton}.profile-security p{margin-top:6px;font-size:17px}.profile-edit{overflow:hidden}.profile-form-grid{grid-template-columns:1fr 1fr;gap:18px;padding:22px;display:grid}.profile-form-grid label{font:700 11px Space Mono}.profile-form-grid input{border:3px solid var(--ink);background:#fff;width:100%;margin-top:7px;padding:12px;font-size:18px;display:block}.profile-form-grid input:focus{box-shadow:4px 4px 0 var(--blue);outline:0}.profile-form-grid select{border:3px solid var(--ink);background:var(--yellow);width:100%;color:var(--ink);cursor:pointer;border-radius:0;margin-top:7px;padding:12px;font:17px Archivo Narrow;display:block}.profile-form-grid select:focus{box-shadow:4px 4px 0 var(--blue);outline:0}.avatar-editor{border-bottom:3px solid var(--ink);grid-column:1/-1;grid-template-columns:auto 1fr;align-items:center;gap:18px;padding-bottom:22px;display:grid}.avatar-editor-copy{gap:8px;display:grid}.avatar-editor-copy strong{text-transform:uppercase;font:22px Anton}.avatar-editor-copy span{font-size:17px}.avatar-editor-actions{flex-wrap:wrap;gap:10px;display:flex}.avatar-editor-actions .button{min-height:40px;padding:8px 13px;font-size:15px}.visually-hidden{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.profile-form-wide{grid-column:1/-1}.profile-form-actions{border-top:3px solid var(--ink);justify-content:flex-end;gap:12px;padding:16px 22px 20px;display:flex}.form-error{color:#b50000;margin:0 22px 16px;font:12px Space Mono}.profile-empty-activity{overflow:hidden}.empty-inline{align-items:center;gap:14px;padding:24px 20px;display:flex}.empty-inline strong,.empty-inline span{display:block}.empty-inline strong{font:18px Anton}.empty-inline span{margin-top:4px;font-size:17px}.modal-backdrop{z-index:20;background:#111111b8;place-items:center;padding:24px;display:grid;position:fixed;inset:0}.viviora-modal{border:3px solid var(--ink);width:min(520px,100%);box-shadow:8px 8px 0 var(--ink);background:#fff;padding:28px}.viviora-modal h2{margin:0 0 12px;font:38px/1 Anton}.viviora-modal p{margin:0 0 16px;font-size:19px;line-height:1.4}.modal-actions{justify-content:flex-end;gap:12px;display:flex}.activity-row{border-bottom:2px solid #eee;gap:14px;padding:20px;display:flex}.activity-row strong,.activity-row span{display:block}.game-management-page{gap:22px;display:grid}.game-play-list-link{justify-self:start}.game-heading{align-items:end}.game-heading p{max-width:700px}.game-create-panel{border:3px solid var(--ink);width:min(100%,980px);box-shadow:4px 4px 0 var(--ink);background:#fff}.game-create-flow{overflow:visible}.game-create-intro{max-width:690px;padding:18px 24px 0;font-size:18px;line-height:1.35}.game-create-intro strong{color:#a47700;align-items:center;gap:5px;display:inline-flex}.game-form-grid{grid-template-columns:minmax(0,1fr);gap:22px;padding:22px 24px 20px;display:grid}.game-book-field{min-width:0;position:relative}.game-field-label{margin-bottom:7px;font:700 11px Space Mono;display:block}.game-book-selector{border:3px solid var(--ink);background:#f3f3f3;align-items:center;gap:10px;min-height:52px;padding:0 12px;display:flex}.game-book-selector:focus-within{box-shadow:3px 3px 0 var(--blue);background:#fff}.game-book-selector input{background:0 0;border:0;flex:1;min-width:0;padding:0;font:17px Archivo Narrow}.game-book-selector input:focus{box-shadow:none;outline:0}.game-book-clear{border:2px solid var(--ink);background:var(--yellow);cursor:pointer;padding:7px 9px;font:10px Space Mono}.game-book-results{border:3px solid var(--ink);max-height:220px;box-shadow:3px 3px 0 var(--ink);background:#fff;margin-top:8px;display:grid;position:static;overflow:auto}.game-book-results button{text-align:left;cursor:pointer;background:#fff;border:0;border-bottom:1px solid #ddd;gap:4px;padding:11px 13px;display:grid}.game-book-results button:hover{background:var(--yellow)}.game-book-results span{font:16px Archivo Narrow}.game-book-results small{color:#606574;font:10px Space Mono}.game-book-empty{color:#606574;border:2px dashed #a6aab4;margin:8px 0 0;padding:10px 12px;font:11px Space Mono}.game-bank-summary{border:3px solid var(--ink);background:#fffde0;align-items:center;gap:14px;min-height:102px;margin-top:12px;padding:10px 12px;display:flex}.game-bank-summary .book-cover-fallback,.game-bank-summary .book-cover-image{aspect-ratio:3/4;box-shadow:3px 3px 0 var(--ink);object-fit:cover;flex:0 0 68px;width:68px!important;height:90px!important;min-height:90px!important}.game-bank-summary>div:last-child{gap:3px;min-width:0;display:grid}.game-bank-kicker{color:#8d7400;font:700 9px Space Mono}.game-bank-summary strong{text-overflow:ellipsis;text-transform:uppercase;font:20px/1.05 Anton;overflow:hidden}.game-bank-summary span,.game-bank-summary b{font:10px Space Mono}.game-bank-summary b{color:#a47700}.game-info-fields{grid-template-columns:repeat(2,minmax(0,1fr));gap:18px 16px;display:grid}.game-reward{color:#8b6800;background:#fff7c4;border:2px solid #c59a00;align-items:center;gap:7px;padding:10px 12px;display:flex}.game-reward strong{font:18px Anton}.game-reward span{color:#6c5a1e;margin-left:auto;font:10px Space Mono}.game-form-grid label,.game-modal-copy label{gap:7px;font:700 11px Space Mono;display:grid}.game-form-grid input,.game-form-grid select,.game-form-grid textarea,.game-modal-copy input,.game-modal-copy textarea{border:3px solid var(--ink);background:#f3f3f3;min-width:0;padding:11px;font:16px Archivo Narrow}.game-form-grid input:focus,.game-form-grid select:focus,.game-form-grid textarea:focus,.game-modal-copy input:focus,.game-modal-copy textarea:focus{box-shadow:3px 3px 0 var(--blue);background:#fff;outline:0}.game-form-wide{grid-column:1/-1}.game-form-note{border:3px solid var(--ink);border-left:8px solid var(--blue);background:#fffde0;margin:0 20px 16px;padding:12px;font:12px Space Mono}.game-create-panel .profile-form-actions{border-top:3px solid var(--ink);min-height:76px;padding:16px 24px 20px}.game-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;display:grid}.game-card{border:3px solid var(--ink);min-width:0;box-shadow:4px 4px 0 var(--ink);background:#fff;flex-direction:column;display:flex}.game-card.unavailable{opacity:.78}.game-card-strip{border-bottom:3px solid var(--ink);height:9px}.game-card-strip.mc{background:var(--blue)}.game-card-strip.tf{background:var(--lime)}.game-card>header{border-bottom:3px solid var(--ink);background:#f8f8f8;justify-content:space-between;align-items:center;padding:12px 14px;display:flex}.game-theme,.game-card>header strong{font:700 11px Space Mono}.game-card>header strong{border:2px solid var(--ink);background:var(--yellow);padding:4px 7px}.game-card-body{flex:1;gap:15px;padding:18px;display:grid}.game-card-book{grid-template-columns:60px minmax(0,1fr);align-items:center;gap:14px;display:grid}.game-card-book h2{text-transform:uppercase;margin:0;font:27px/1.05 Anton}.game-card-book p{color:#606574;margin:7px 0 0;font:12px Space Mono}.game-metrics{border:3px solid var(--ink);background:#f3f3f3;grid-template-columns:1fr 1fr;gap:10px;padding:12px;display:grid}.game-metrics div{gap:4px;display:grid}.game-metrics span{color:#666;font:10px Space Mono}.game-metrics strong{font:24px Anton}.game-card-copy{color:#586070;margin:0;font:12px/1.45 Space Mono}.game-card>footer{border-top:3px solid var(--ink);background:#f8f8f8;justify-content:flex-end;gap:8px;padding:12px;display:flex}.game-card>footer .button{margin-left:auto}.game-modal-copy{gap:16px;padding:20px;display:grid}.game-modal-copy p{margin:0;font:12px/1.5 Space Mono}.book-games-section{border-top:3px solid var(--ink);margin-top:24px;padding-top:16px}.book-games-heading{justify-content:space-between;align-items:center;gap:12px;font:700 13px Space Mono;display:flex}.book-games-heading>span{align-items:center;gap:7px;display:inline-flex}.book-games-list{gap:8px;margin-top:12px;display:grid}.book-game-row{border:2px solid var(--ink);background:#f8f8f8;justify-content:space-between;align-items:center;gap:12px;min-width:0;padding:12px;display:flex}.book-game-row>div:first-child{flex:auto;min-width:0}.book-game-row .button{white-space:nowrap;flex:none}.book-game-row strong,.book-game-row span{display:block}.book-game-row strong{font-size:18px}.book-game-row span{color:#606574;margin-top:4px;font:11px Space Mono}.game-unavailable-label{font-weight:700;color:var(--red)!important}.game-result{text-align:center;justify-items:center;gap:12px;display:grid}.game-play-shell{z-index:1000;background:#10150f;min-height:100dvh;position:fixed;inset:0;overflow:hidden}.game-play-context{z-index:90;border:2px solid var(--ink);max-width:min(460px,100vw - 32px);box-shadow:3px 3px 0 var(--ink);text-align:center;pointer-events:none;background:#fffde0;gap:3px;padding:8px 13px;display:grid;position:fixed;top:14px;left:50%;transform:translate(-50%)}.game-play-context strong{text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap;font:18px/1 Anton;overflow:hidden}.game-play-context span{color:#5f6570;justify-content:center;align-items:center;gap:4px;font:10px Space Mono;display:inline-flex}.game-result h1{margin:0;font:62px Anton}.game-result-reward{border:3px solid var(--ink);color:#666;background:#f3f3f3;justify-items:center;gap:5px;padding:14px 20px;display:grid}.game-result-reward.earned{color:#8b6800;background:#fff7c4;border-color:#c59a00}.game-result-reward strong{font:24px Anton}.game-result-reward span{font:11px Space Mono}.profile-trophy-panel{width:100%}.profile-trophy-value{color:#b28a00;align-items:center;gap:14px;padding:22px 20px;display:flex}.profile-trophy-value strong{color:var(--ink);font:58px/1 Anton}.profile-trophy-value>div{gap:4px;display:grid}.profile-trophy-value span{color:#666;font:700 11px Space Mono}.profile-trophy-value small{color:#606574;font:13px Archivo Narrow}.profile-trophy-panel>p{color:#606574;margin:4px 20px 20px;font:12px/1.5 Space Mono}@media (width<=640px){.game-form-grid{padding:18px 16px 16px}.game-info-fields{grid-template-columns:1fr}.game-create-intro{padding-inline:16px;font-size:16px}.game-create-panel .profile-form-actions{padding-inline:16px}.game-heading .button{justify-content:center;width:100%}.book-game-row{flex-direction:column;align-items:flex-start}.game-card-book h2{font-size:24px}.game-reward{flex-wrap:wrap;align-items:flex-start}.game-reward span{width:100%;margin-left:26px}.game-play-context{max-width:calc(100vw - 20px);padding:6px 9px;top:8px}.game-play-context strong{font-size:15px}.game-play-context span{font-size:8px}}.profile-exp-line{color:#606574;justify-content:space-between;gap:12px;padding:0 20px 18px;font:12px Space Mono;display:flex}.profile-exp-line strong{color:var(--blue)}.profile-achievement-hero{justify-content:space-between;align-items:center;gap:20px;padding-right:20px;display:flex}.profile-level-badge{border:3px solid var(--blue);min-width:110px;color:var(--blue);box-shadow:3px 3px 0 var(--blue);background:#eef3ff;justify-items:center;gap:3px;padding:12px 16px;display:grid}.profile-level-badge span{font:700 11px Space Mono}.profile-level-badge strong{font:48px/1 Anton}.profile-exp-progress{border:2px solid var(--ink);background:#eee;height:14px;margin:0 20px 20px;overflow:hidden}.profile-exp-progress span{background:linear-gradient(90deg, var(--blue), #42a5f5);height:100%;transition:width .55s;display:block}.profile-achievements-earned{padding:0 20px 22px}.profile-achievements-heading{justify-content:space-between;align-items:center;gap:12px;display:flex}.profile-achievements-heading>span{color:#666;font:11px Space Mono}.achievement-more-card{border:3px dashed var(--ink);cursor:pointer;text-align:center;background:#e7e700;align-content:center;place-items:center;gap:7px;min-height:150px;font-family:Space Mono;display:grid}.achievement-more-card strong{font:25px Anton}.achievement-more-card span,.achievement-more-card small{font:11px Space Mono}.achievement-modal-filters{flex-wrap:wrap;gap:8px;margin-bottom:16px;display:flex}.achievement-modal-filters button{border:2px solid var(--ink);cursor:pointer;background:#fff;padding:8px 12px;font:11px Space Mono}.achievement-modal-filters button.selected{background:var(--blue);color:#fff}.achievement-modal-list{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;max-height:min(65vh,620px);padding-right:4px;display:grid;overflow:auto}.achievement-modal-list .achievement-earned-card{min-height:150px}.profile-achievements-earned h2{margin:0 0 12px;font:22px Anton}.achievement-earned-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;display:grid}.achievement-earned-card{border:2px solid var(--ink);background:#fffdf0;gap:5px;min-height:88px;padding:12px;display:grid}.achievement-earned-card strong{text-transform:uppercase;font:15px/1.15 Anton}.achievement-earned-card span{color:#a47700;font:700 11px Space Mono}.achievement-earned-card small{color:#6b7280;font-size:11px}.achievement-earned-card p{color:#596070;margin:0;font-size:12px;line-height:1.25}.achievement-mini-progress{border:1px solid var(--ink);background:#e5e5e5;height:6px;overflow:hidden}.achievement-mini-progress span{background:var(--blue);height:100%;transition:width .4s;display:block}.achievement-earned-card.is-locked{opacity:.55;filter:grayscale(.35);background:#f2f2f2}.achievement-earned-card.is-unlocked{background:#fff8c8;border-color:#b99300}.achievements-admin-page{gap:20px;display:grid}.achievement-stat-grid{grid-template-columns:repeat(4,1fr);gap:12px;display:grid}.achievement-stat-grid>div{border:3px solid var(--ink);box-shadow:3px 3px 0 var(--ink);background:#fff;gap:6px;padding:16px;display:grid}.achievement-stat-grid strong{color:var(--blue);font:40px/1 Anton}.achievement-stat-grid span{font:10px Space Mono}.achievement-list{border:3px solid var(--ink);box-shadow:4px 4px 0 var(--ink);background:#fff}.achievement-row{border-top:2px solid #ddd;grid-template-columns:42px minmax(0,1fr) auto auto;align-items:center;gap:14px;padding:14px 16px;display:grid}.achievement-row>b{color:var(--blue);font:24px Anton}.achievement-row h2{text-transform:uppercase;margin:0;font:20px Anton}.achievement-row p{color:#596070;margin:4px 0 0;font-size:14px}.achievement-row small{color:var(--red);margin-top:5px;font:10px Space Mono;display:block}.achievement-row>strong{color:#a47700;white-space:nowrap;font:18px Anton}.achievement-supported,.achievement-unsupported{border:2px solid var(--ink);white-space:nowrap;padding:5px 7px;font:9px Space Mono}.achievement-supported{background:var(--lime)}.achievement-unsupported{color:var(--red);background:#ffe4df}@media (width<=700px){.achievement-stat-grid{grid-template-columns:1fr 1fr}.achievement-row{grid-template-columns:32px minmax(0,1fr)}.achievement-row>strong,.achievement-row>span{grid-column:2;justify-self:start}.profile-achievement-hero{flex-direction:column;align-items:flex-start;padding-right:0}.profile-level-badge{align-self:flex-end}.achievement-earned-grid,.achievement-modal-list{grid-template-columns:1fr}}.activity-row strong{font-size:19px}.activity-row span{color:#5d6270;margin-top:5px;font:11px Space Mono}@media (width<=1150px){.layout{grid-template-columns:240px minmax(0,760px);justify-content:start}.trending,.right-rail{display:none}}@media (width<=780px){.topbar{flex-wrap:wrap;height:auto;padding:12px 16px}.topnav{order:3;width:100%;overflow:auto}.layout{height:auto;padding:16px;display:block}.rail{display:none}.content{padding:0}.profile-hero{flex-direction:column;align-items:flex-start}.profile-avatar{width:96px;height:96px;font-size:36px}.profile-hero h1{font-size:38px}.profile-stats{grid-template-columns:1fr 1fr}.profile-columns{grid-template-columns:1fr}.profile-security,.profile-security-body{flex-direction:column;align-items:flex-start}.profile-security .button.danger{margin-left:0}.profile-form-grid{grid-template-columns:1fr}.avatar-editor{grid-column:auto;grid-template-columns:1fr}.user-avatar-large{width:96px;height:96px;font-size:36px}.profile-form-wide{grid-column:auto}.page-heading{flex-direction:column;align-items:flex-start}.page-heading h1,.placeholder h1{font-size:38px}}
