:root{--ink: #0a0908;--panel: #131110;--plate: #1c1916;--plate-hi: #2a2621;--line: #36312b;--bone: #efe8da;--bone-2: #cfc7b7;--dim: #9a9183;--signal: #ff5a1f;--signal-hi: #ff8a52;--signal-deep: #b93a09;--brass: #d9a93f;--brass-deep: #7c5d16;--danger: #ff5d5d;--ok: #7fd18b;--f-display: "Big Shoulders Display", "Arial Narrow", Impact, sans-serif;--f-body: "Hanken Grotesk", system-ui, sans-serif;--f-mono: "IBM Plex Mono", ui-monospace, Menlo, monospace;--r: 6px}*{box-sizing:border-box;margin:0;padding:0}html{color-scheme:dark}body{background:var(--ink);color:var(--bone);font-family:var(--f-body);font-size:15px;line-height:1.5;min-height:100vh;overflow-x:clip;-webkit-font-smoothing:antialiased}body:before{content:"";position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:200;opacity:.06;mix-blend-mode:overlay;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='160' height='160'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 1  0 0 0 0 1  0 0 0 0 1  0 0 0 .9 0'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>")}img{max-width:100%;display:block}a{color:inherit}button{font:inherit;color:inherit;cursor:pointer}:focus-visible{outline:3px solid var(--signal);outline-offset:2px}::selection{background:var(--signal);color:#000}.label{font-family:var(--f-mono);font-size:11px;font-weight:500;letter-spacing:.14em;text-transform:uppercase;color:var(--dim)}.label.hot{color:var(--signal)}.display{font-family:var(--f-display);font-weight:800;text-transform:uppercase;line-height:.98;letter-spacing:.01em}.mono{font-family:var(--f-mono)}.muted{color:var(--dim)}.right{margin-left:auto}.row{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.stack{display:grid;gap:16px}.grow{flex:1;min-width:0}.plate{background:linear-gradient(180deg,#221f1b,#171512);border:2px solid #000;border-radius:var(--r);box-shadow:inset 0 1px #ffffff12,inset 0 -2px #00000073,0 5px #000,0 16px 30px #0006}.plate.pad{padding:22px}.btn{--face: var(--signal);--face-hi: var(--signal-hi);--edge: var(--signal-deep);display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:40px;padding:0 18px;font-family:var(--f-display);font-weight:800;font-size:17px;letter-spacing:.06em;text-transform:uppercase;text-decoration:none;color:#120804;background:linear-gradient(180deg,var(--face-hi),var(--face) 55%);border:2px solid #000;border-radius:var(--r);box-shadow:inset 0 1px #ffffff73,0 4px 0 var(--edge),0 4px 0 2px #000;margin-bottom:6px;transition:transform .07s,box-shadow .07s,filter .15s;white-space:nowrap}.btn:hover{filter:brightness(1.07)}.btn:active{transform:translateY(3px);box-shadow:inset 0 2px 4px #00000059,0 1px 0 var(--edge),0 1px 0 2px #000}.btn:disabled{opacity:.5;cursor:not-allowed;transform:none}.btn.ghost{--face: #2b2722;--face-hi: #3a352e;--edge: #0d0c0b;color:var(--bone);box-shadow:inset 0 1px #ffffff1f,0 4px #0d0c0b,0 4px 0 2px #000}.btn.ghost:active{box-shadow:inset 0 2px 4px #00000080,0 1px #0d0c0b,0 1px 0 2px #000}.btn.danger{--face: #e04b4b;--face-hi: #ff7a7a;--edge: #7a1c1c}.btn.brass{--face: var(--brass);--face-hi: #f0c967;--edge: var(--brass-deep)}.btn.sm{min-height:32px;padding:0 12px;font-size:14px;margin-bottom:4px}.btn.block{width:100%}.icon-btn{width:32px;height:32px;display:inline-grid;place-items:center;background:#100f0d;border:2px solid #000;border-radius:4px;box-shadow:inset 0 1px #ffffff14;color:var(--bone-2)}.icon-btn:hover:not(:disabled){border-color:var(--signal);color:var(--bone)}.icon-btn:disabled{opacity:.3;cursor:not-allowed}.icon-btn svg{width:15px;height:15px}.link-btn{background:none;border:0;color:var(--dim);text-decoration:underline;text-underline-offset:3px;font-size:13px}.link-btn:hover{color:var(--bone)}.field{display:grid;gap:6px}.field>span,.field>.lab{font-family:var(--f-mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--dim)}.field small{color:var(--dim);font-size:12px}.input,.select,.textarea{width:100%;min-height:42px;padding:0 12px;color:var(--bone);font:inherit;background:#0b0a09;border:2px solid #000;border-radius:var(--r);box-shadow:inset 0 3px 6px #000000b3,0 1px #ffffff12}.textarea{padding:10px 12px;resize:vertical;line-height:1.5;min-height:100px}.select{-webkit-appearance:none;-moz-appearance:none;appearance:none;padding-right:32px;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'><path d='M1 1l5 5 5-5' fill='none' stroke='%239a9183' stroke-width='2'/></svg>");background-repeat:no-repeat;background-position:right 12px center}.input:focus,.select:focus,.textarea:focus{outline:none;border-color:var(--signal);box-shadow:inset 0 3px 6px #000000b3,0 0 0 3px #ff5a1f4d}.input::placeholder,.textarea::placeholder{color:#5c554b}.input.mono{font-family:var(--f-mono);font-size:13px}.check{display:flex;align-items:flex-start;gap:10px;cursor:pointer}.check input{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:22px;height:22px;flex:none;margin-top:1px;background:#0b0a09;border:2px solid #000;border-radius:4px;box-shadow:inset 0 3px 5px #000000b3,0 1px #ffffff1a;display:grid;place-items:center;cursor:pointer}.check input:checked{background:var(--signal);box-shadow:inset 0 1px #fff6,0 0 0 1px #000}.check input:checked:after{content:"";width:5px;height:10px;border:solid #120804;border-width:0 3px 3px 0;transform:rotate(45deg) translate(-1px,-1px)}.check input:disabled{opacity:.4;cursor:not-allowed}.check span{line-height:1.35}.check small{display:block;color:var(--dim);font-size:12px}.alert{padding:11px 14px;font-size:14px;border:2px solid #000;border-left:6px solid var(--danger);background:#241210;border-radius:var(--r)}.alert.ok{border-left-color:var(--brass);background:#221c0e}.alert.info{border-left-color:var(--dim);background:#181614}.badge{display:inline-flex;align-items:center;gap:6px;padding:2px 8px;font-family:var(--f-mono);font-size:10.5px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;background:#000;color:var(--bone-2);border:1px solid #3a352e;border-radius:3px;white-space:nowrap}.badge.hot{color:#120804;background:var(--signal);border-color:#000}.badge.brass{color:#1a1204;background:var(--brass);border-color:#000}.badge.ok{color:var(--ok);border-color:#2b4a30}.badge.bad{color:var(--danger);border-color:#5a2323}.badge.dim{color:var(--dim)}.app{display:grid;grid-template-columns:236px minmax(0,1fr);min-height:100vh}.side{position:sticky;top:0;height:100vh;display:flex;flex-direction:column;gap:6px;padding:20px 14px;background:linear-gradient(180deg,#151311,#0d0c0b);border-right:2px solid #000;box-shadow:1px 0 #ffffff0d}.brand{display:flex;align-items:center;gap:10px;padding:4px 8px 18px;text-decoration:none}.brand-mark{width:28px;height:28px;background:linear-gradient(180deg,var(--signal-hi),var(--signal));border:2px solid #000;box-shadow:inset 0 1px #ffffff80,3px 3px #000;display:grid;place-items:center;flex:none}.brand-mark svg{width:12px;height:12px;fill:#120804;margin-left:2px}.brand b{font-family:var(--f-display);font-weight:800;font-size:20px;letter-spacing:.05em;text-transform:uppercase;line-height:1}.brand small{display:block;font-family:var(--f-mono);font-size:9.5px;letter-spacing:.2em;color:var(--signal);text-transform:uppercase}.navlink{display:flex;align-items:center;gap:12px;padding:11px 12px;font-family:var(--f-display);font-weight:700;font-size:20px;letter-spacing:.06em;text-transform:uppercase;text-decoration:none;color:var(--bone-2);background:#100f0d;border:2px solid #000;border-radius:var(--r);box-shadow:inset 0 1px #ffffff0d}.navlink svg{width:18px;height:18px;flex:none}.navlink:hover{border-color:#4a443b}.navlink.active{color:#120804;background:linear-gradient(180deg,var(--signal-hi),var(--signal));box-shadow:inset 0 1px #fff6}.side .who{margin-top:auto;padding:12px;background:#0b0a09;border:2px solid #000;border-radius:var(--r);box-shadow:inset 0 2px 5px #000000b3;display:grid;gap:4px}.side .who b{font-weight:600;font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.side .who span{font-size:12px;color:var(--dim);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.main{padding:32px clamp(18px,3vw,44px) 80px;min-width:0;max-width:1500px;width:100%;margin:0 auto}.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:18px;flex-wrap:wrap;margin-bottom:24px}.page-head h1{font-size:clamp(40px,5vw,60px)}.crumbs{display:flex;gap:8px;align-items:center;margin-bottom:8px;flex-wrap:wrap}.crumbs a{text-decoration:none}.crumbs a:hover{color:var(--bone)}.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:14px;margin-bottom:22px}.stat{padding:14px 16px;background:#0d0c0b;border:2px solid #000;border-radius:var(--r);box-shadow:inset 0 2px 6px #0009,0 1px #ffffff0f}.stat b{display:block;font-family:var(--f-display);font-weight:800;font-size:42px;line-height:1;margin-top:6px}.stat b.hot{color:var(--signal)}.filters{display:grid;grid-template-columns:minmax(220px,1.6fr) repeat(auto-fit,minmax(150px,1fr));gap:12px;align-items:end;padding:16px;margin-bottom:18px}.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse}th{text-align:left;padding:12px 16px;font-family:var(--f-mono);font-size:10.5px;font-weight:500;letter-spacing:.14em;text-transform:uppercase;color:var(--dim);background:#0d0c0b;border-bottom:2px solid #000;white-space:nowrap}td{padding:13px 16px;border-bottom:1px solid #26221e;vertical-align:middle}tbody tr{transition:background .1s}tbody tr.click{cursor:pointer}tbody tr.click:hover{background:#ff5a1f12}tbody tr:last-child td{border-bottom:0}.cell-name b{display:block;font-weight:600}.cell-name span{color:var(--dim);font-size:13px}.chips{display:flex;gap:6px;flex-wrap:wrap}.pager{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 16px;border-top:2px solid #000}.empty{padding:48px 20px;text-align:center;color:var(--dim);display:grid;gap:10px;justify-items:center}.empty h3{font-family:var(--f-display);font-weight:800;font-size:28px;text-transform:uppercase;color:var(--bone)}.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:24px}.pcard{display:grid;grid-template-rows:auto 1fr;text-decoration:none;overflow:hidden;transition:transform .15s,box-shadow .15s}.pcard:hover{transform:translate(-3px,-3px);box-shadow:inset 0 1px #ffffff12,6px 6px 0 var(--signal),6px 6px 0 2px #000}.pcard .banner{aspect-ratio:16 / 9;background:linear-gradient(135deg,#3a1608,#120a05);border-bottom:2px solid #000;position:relative;overflow:hidden}.pcard .banner img{width:100%;height:100%;object-fit:cover}.pcard .banner .badge{position:absolute;top:10px;left:10px}.pcard .banner .ph{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;font-family:var(--f-display);font-weight:800;font-size:60px;color:#ffffff1f;text-transform:uppercase}.pcard .body{padding:16px;display:grid;gap:10px;align-content:start}.pcard h3{font-family:var(--f-display);font-weight:800;font-size:26px;text-transform:uppercase;line-height:1}.pcard .nums{display:flex;gap:18px}.pcard .nums div b{display:block;font-family:var(--f-display);font-weight:800;font-size:26px;line-height:1}.tabs{display:flex;gap:8px;margin-bottom:22px;flex-wrap:wrap}.tab{padding:9px 16px;font-family:var(--f-display);font-weight:700;font-size:18px;letter-spacing:.06em;text-transform:uppercase;background:#100f0d;color:var(--bone-2);border:2px solid #000;border-radius:var(--r);box-shadow:inset 0 1px #ffffff0d,0 3px #000}.tab[aria-selected=true]{background:linear-gradient(180deg,var(--signal-hi),var(--signal));color:#120804}.module{margin-bottom:20px;overflow:hidden}.module-head{display:flex;align-items:center;gap:14px;padding:14px 16px;border-bottom:2px solid #000;background:#131110}.module-head .thumb{width:42px;aspect-ratio:2 / 3;flex:none;background:linear-gradient(160deg,var(--signal),#4a1503);border:2px solid #000;border-radius:3px;overflow:hidden}.module-head .thumb img{width:100%;height:100%;object-fit:cover}.module-head h3{font-family:var(--f-display);font-weight:800;font-size:24px;text-transform:uppercase;line-height:1}.lesson-line{display:flex;align-items:center;gap:12px;padding:11px 16px;border-bottom:1px solid #26221e}.lesson-line:last-of-type{border-bottom:0}.lesson-line .n{width:30px;height:30px;flex:none;display:grid;place-items:center;font-family:var(--f-mono);font-size:12px;background:#0b0a09;border:2px solid #000;border-radius:4px;color:var(--dim)}.lesson-line a.t{flex:1;min-width:0;text-decoration:none;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lesson-line a.t:hover{color:var(--signal-hi)}.add-line{padding:12px 16px;background:#100f0d;border-top:2px solid #000}.urlbox{display:flex;gap:10px;align-items:stretch}.urlbox code{flex:1;min-width:0;display:block;padding:11px 14px;font-family:var(--f-mono);font-size:13px;background:#0b0a09;border:2px solid #000;border-radius:var(--r);box-shadow:inset 0 3px 6px #000000b3;overflow-wrap:anywhere;word-break:break-all;color:var(--signal-hi)}.steps{counter-reset:s;display:grid;gap:10px;padding-left:0;list-style:none}.steps li{counter-increment:s;display:flex;gap:12px;color:var(--bone-2)}.steps li:before{content:counter(s);flex:none;width:24px;height:24px;display:grid;place-items:center;font-family:var(--f-mono);font-size:12px;font-weight:600;background:var(--signal);color:#120804;border:2px solid #000;border-radius:4px}.two{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:22px;align-items:start}.sec-title{font-family:var(--f-display);font-weight:800;font-size:26px;text-transform:uppercase;margin-bottom:14px;display:flex;align-items:center;gap:12px}.sec-title:after{content:"";flex:1;height:2px;background:#000;box-shadow:0 1px #ffffff12}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.form-grid .full{grid-column:1 / -1}.kv{display:grid;grid-template-columns:130px 1fr;gap:8px 12px;font-size:14px}.kv dt{font-family:var(--f-mono);font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--dim);padding-top:3px}.leds{display:flex;gap:3px}.leds i{flex:1;height:8px;background:#0b0a09;border:1px solid #000}.leds i.on{background:var(--signal);box-shadow:0 0 6px #ff5a1fb3}.leds.brass i.on{background:var(--brass);box-shadow:0 0 6px #d9a93f99}.prog-line{display:grid;gap:6px;padding:12px 0;border-bottom:1px solid #26221e}.prog-line:last-child{border-bottom:0}.timeline{display:grid;gap:0}.timeline>div{display:flex;gap:12px;padding:10px 0;border-bottom:1px solid #26221e;align-items:baseline}.timeline>div:last-child{border-bottom:0}.timeline b{font-weight:600}.timeline .when{margin-left:auto;font-family:var(--f-mono);font-size:11px;color:var(--dim);white-space:nowrap}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:150;display:grid;grid-template-columns:minmax(0,1fr);justify-items:center;align-items:start;padding:5vh 16px;background:#000000b8;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);overflow-y:auto}.modal{width:100%;min-width:0;max-width:640px;animation:pop .16s ease-out}.modal.wide{max-width:820px}.modal-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:18px 22px;border-bottom:2px solid #000}.modal-head h2{font-family:var(--f-display);font-weight:800;font-size:30px;text-transform:uppercase;line-height:1}.modal-body{padding:22px;display:grid;gap:16px;min-width:0}.modal-body>*{min-width:0}.modal-foot{display:flex;justify-content:flex-end;gap:12px;padding:14px 22px 10px;border-top:2px solid #000}@keyframes pop{0%{transform:translateY(10px);opacity:0}}.toasts{position:fixed;bottom:20px;right:20px;z-index:300;display:grid;gap:10px}.toast{padding:12px 16px;background:#1c1916;border:2px solid #000;border-left:6px solid var(--brass);border-radius:var(--r);box-shadow:0 6px #000,0 14px 30px #00000080;animation:pop .2s ease-out;max-width:380px;font-size:14px}.toast.err{border-left-color:var(--danger)}.picker{display:flex;gap:14px;align-items:center}.picker .prev{width:90px;aspect-ratio:2 / 3;background:#0b0a09;border:2px dashed #3a352e;border-radius:4px;overflow:hidden;display:grid;place-items:center;color:var(--dim);font-size:11px;text-align:center;flex:none}.picker .prev.wide{width:160px;aspect-ratio:16 / 9}.banner-prev{aspect-ratio:21 / 8;overflow:hidden;border:2px solid #000;border-radius:8px}.banner-prev img,.picker .prev img{width:100%;height:100%;object-fit:cover}.preview-box{padding:16px 18px;background:#0b0a09;border:2px solid #000;border-radius:var(--r);box-shadow:inset 0 3px 6px #0009;max-height:280px;overflow:auto}.rich{color:var(--bone-2);font-size:14.5px}.rich>*+*{margin-top:10px}.rich h3,.rich h4,.rich h5{font-family:var(--f-display);text-transform:uppercase;color:var(--bone)}.rich ul{padding-left:20px}.rich ul li::marker{color:var(--signal)}.rich a{color:var(--signal-hi)}.res-line{display:flex;align-items:center;gap:12px;padding:10px 12px;background:#100f0d;border:2px solid #000;border-radius:var(--r)}.res-line .ico{width:34px;height:34px;flex:none;display:grid;place-items:center;background:var(--signal);color:#120804;border:2px solid #000;border-radius:4px}.res-line .ico svg{width:16px;height:16px}.res-line .ico.link{background:var(--brass)}.res-line b{display:block;font-weight:600;line-height:1.2}.res-line small{color:var(--dim);font-size:12px;word-break:break-all}.auth{min-height:100vh;display:grid;place-items:center;padding:28px 16px;position:relative;isolation:isolate}.auth:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;z-index:-1;background:radial-gradient(60% 50% at 85% 0%,rgba(255,90,31,.2),transparent 60%),radial-gradient(50% 50% at 0% 100%,rgba(217,169,63,.1),transparent 60%)}.auth-card{width:100%;max-width:480px;padding:32px 30px;display:grid;gap:18px}.auth-card h1{font-size:48px}.loading{min-height:50vh;display:grid;place-items:center}.spinner{width:34px;height:34px;border:4px solid #2a2621;border-top-color:var(--signal);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@media(max-width:1000px){.app{grid-template-columns:1fr}.side{position:static;height:auto;flex-direction:row;align-items:center;flex-wrap:wrap;padding:12px}.brand{padding:0 8px 0 0}.side .who{margin:0 0 0 auto}.two,.form-grid{grid-template-columns:1fr}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}.grip{cursor:grab;touch-action:none}.grip:active{cursor:grabbing}[data-sort-item].dragging{opacity:.35}[data-sort-item].drop-before{box-shadow:0 -3px 0 0 var(--signal)}[data-sort-item].drop-after{box-shadow:0 3px 0 0 var(--signal)}.import-preview{max-height:260px;overflow:auto;border:2px solid #000;border-radius:4px}.import-preview .lesson-line{padding:8px 12px}.import-preview .lesson-line .t{flex:1;min-width:0;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
