@font-face{font-family:Lama Sans;src:url(/fonts/LamaSans-Regular.woff2) format("woff2");font-weight:400;font-display:swap}@font-face{font-family:Lama Sans;src:url(/fonts/LamaSans-Medium.woff2) format("woff2");font-weight:500;font-display:swap}@font-face{font-family:Lama Sans;src:url(/fonts/LamaSans-SemiBold.woff2) format("woff2");font-weight:600;font-display:swap}@font-face{font-family:Lama Sans;src:url(/fonts/LamaSans-Bold.woff2) format("woff2");font-weight:700;font-display:swap}:root{--blue: #0066ff;--blue-light: #00a9ff;--blue-deep: #0000ee;--yellow: #ffcc02;--amber: #ffb700;--orange: #ff5b00;--orange-soft: #ff8c00;--green: #00ac37;--green-deep: #006a11;--purple: #612cb5;--purple-deep: #461488;--pink: #ff95d1;--ink: #0c0c0c;--paper: #f8f1f0;--ink-2: #454b54;--ink-3: #7b828b;--surface: #ffffff;--canvas: #f6f6f7;--line: #e3e4e7;--line-2: #cdd0d5;--blue-wash: #eef4ff;--r-sm: 3px;--r: 5px;--r-lg: 7px;--sidebar: 236px}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;font-family:Lama Sans,Segoe UI,system-ui,sans-serif;font-size:13.5px;color:var(--ink);background:var(--canvas);-webkit-font-smoothing:antialiased}h1,h2,h3,h4{margin:0;font-weight:700;letter-spacing:-.01em}h1{font-size:20px}h2{font-size:16px}h3{font-size:14px}a{color:var(--blue);text-decoration:none}a:hover{text-decoration:underline}button,input,select,textarea{font:inherit;color:inherit}::selection{background:#d5e4ff}.shell{display:flex;min-height:100%}.sidebar{width:var(--sidebar);flex:none;position:sticky;top:0;height:100vh;background:var(--blue);color:#fff;display:flex;flex-direction:column}.sidebar .brand{display:flex;align-items:center;gap:11px;padding:18px 18px 17px;border-bottom:1px solid rgba(255,255,255,.2)}.sidebar .brand .mark{width:34px;color:#fff;flex:none}.sidebar .brand b{font-size:14px;display:block;line-height:1.3}.sidebar .brand span{font-size:11px;color:#ffffffb8}.sidebar nav{padding:12px 10px;display:flex;flex-direction:column;gap:1px;flex:1;overflow-y:auto}.sidebar nav a{display:flex;align-items:center;gap:10px;padding:9px 12px;border-radius:var(--r);color:#ffffffd9;font-size:13.5px;font-weight:500;transition:background .12s}.sidebar nav a:hover{background:#ffffff24;color:#fff;text-decoration:none}.sidebar nav a.active{background:#fff;color:var(--blue);font-weight:600}.sidebar nav a svg{width:17px;height:17px;flex:none}.sidebar .who{border-top:1px solid rgba(255,255,255,.2);padding:14px 18px;font-size:11.5px;color:#ffffffb8}.sidebar .who b{color:#fff;display:block;font-size:13px;margin-bottom:2px;font-weight:600}.sidebar .who button{margin-top:11px;width:100%;background:transparent;border:1px solid rgba(255,255,255,.45);color:#fff;padding:7px;border-radius:var(--r);cursor:pointer;font-weight:500;font-size:12.5px;transition:background .12s}.sidebar .who button:hover{background:#ffffff29}.main{flex:1;min-width:0;display:flex;flex-direction:column}.topbar{background:var(--surface);border-bottom:1px solid var(--line);padding:14px 24px;display:flex;align-items:center;gap:14px;position:sticky;top:0;z-index:30}.topbar .sub{color:var(--ink-3);font-size:12px;margin-top:3px}.topbar .spacer{flex:1}.content{padding:20px 24px 52px;flex:1}.btn{display:inline-flex;align-items:center;gap:7px;justify-content:center;border:1px solid var(--line-2);background:var(--surface);color:var(--ink);padding:8px 15px;border-radius:var(--r);cursor:pointer;font-weight:600;font-size:13px;white-space:nowrap;transition:background .12s,border-color .12s}.btn:hover:not(:disabled){background:var(--canvas);border-color:var(--ink-3)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn svg{width:15px;height:15px}.btn.primary{background:var(--blue);border-color:var(--blue);color:#fff}.btn.primary:hover:not(:disabled){background:var(--blue-deep);border-color:var(--blue-deep)}.btn.danger{color:#a82400;border-color:#e6c4b8}.btn.danger:hover:not(:disabled){background:#fdf0eb;border-color:#a82400}.btn.ghost{border-color:transparent;background:transparent;padding:6px 8px}.btn.ghost:hover:not(:disabled){background:var(--canvas);border-color:transparent}.btn.sm{padding:5px 11px;font-size:12.5px}.input,.select,textarea.input{width:100%;padding:8px 12px;border:1px solid var(--line-2);border-radius:var(--r);background:var(--surface);outline:none;transition:border-color .12s,box-shadow .12s}.input:focus,.select:focus,textarea.input:focus{border-color:var(--blue);box-shadow:0 0 0 3px var(--blue-wash)}.input:disabled{background:var(--canvas);color:var(--ink-3)}.select{appearance:none;padding-left:30px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M3 5l3 3 3-3' fill='none' stroke='%237b828b' stroke-width='1.6' stroke-linecap='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:left 11px center;background-size:11px}.field{display:flex;flex-direction:column;gap:5px}.field>label{font-size:12px;font-weight:600;color:var(--ink-2)}.field .hint{font-size:11.5px;color:var(--ink-3)}.filters{display:flex;flex-wrap:wrap;gap:9px;align-items:center;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);padding:11px 13px;margin-bottom:16px}.filters .select,.filters .input{width:auto;min-width:146px}.filters .search{min-width:226px}.filters .spacer{flex:1}.filters .count{font-size:12px;color:var(--ink-3);font-weight:500}.searchbox{position:relative;display:inline-flex}.searchbox svg{position:absolute;inset-inline-start:11px;top:9.5px;width:15px;height:15px;color:var(--ink-3);pointer-events:none}.searchbox .input{padding-inline-start:33px}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);overflow:hidden}.card>header{padding:13px 16px;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:10px}.card>header .spacer{flex:1}.card .body{padding:16px}.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(162px,1fr));gap:12px;margin-bottom:18px}.stat{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);padding:13px 15px;display:flex;align-items:center;gap:12px}.stat .stat-icon{width:34px;height:34px;border-radius:var(--r);flex:none;display:grid;place-items:center;background:color-mix(in srgb,var(--c) 11%,#fff);color:var(--c)}.stat .stat-icon svg{width:18px;height:18px}.stat .k{font-size:11.5px;color:var(--ink-3);font-weight:600}.stat .v{font-size:23px;font-weight:700;line-height:1.1;margin-top:2px;font-variant-numeric:tabular-nums}.stat .v.small{font-size:14px;font-weight:600;padding-top:5px}.table-wrap{overflow:auto;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg)}.card .table-wrap{border:0;border-radius:0}table{border-collapse:separate;border-spacing:0;width:100%;font-size:13px}thead th{background:var(--canvas);text-align:right;font-weight:600;color:var(--ink-2);padding:9px 12px;white-space:nowrap;border-bottom:1px solid var(--line);position:sticky;top:0;z-index:2}thead tr.group th.season{text-align:center;font-weight:700;font-size:13px;border-bottom:2px solid currentColor}thead tr.group th.season.s0{color:var(--blue);background:#eef4ff}thead tr.group th.season.s1{color:#b34000;background:#fdf1ea}thead tr.group th.season.s2{color:var(--purple-deep);background:#f3eefb}thead tr.group th.season.s3{color:var(--green-deep);background:#ecf7ef}thead tr.group th.season.s4{color:#0073ad;background:#ebf6fc}thead tr.sub th{font-size:12px;font-weight:600;color:var(--ink-3)}thead th.sep,tbody td.sep{border-inline-start:1px solid var(--line)}tbody td{padding:9px 12px;border-bottom:1px solid var(--line);vertical-align:middle}tbody tr:last-child td{border-bottom:0}tbody tr:hover td{background:#fafafb}td.num,th.num{text-align:center;font-variant-numeric:tabular-nums}td.detail{font-size:12.5px;color:var(--ink-2)}tr.section td{background:var(--canvas);color:var(--ink);font-weight:700;font-size:12.5px;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.t-name{font-weight:600;color:var(--ink)}a.t-name:hover{color:var(--blue)}.t-sub{color:var(--ink-3);font-size:11.5px;font-weight:400}.price{font-weight:600;font-variant-numeric:tabular-nums;font-size:13.5px}.price.was{text-decoration:line-through;color:var(--ink-3);font-weight:400;font-size:12px}.price.now{color:var(--green-deep)}.price-pair{display:inline-flex;align-items:baseline;gap:6px}.none{color:#b0b5bc;font-size:12.5px}td.editable{cursor:pointer}tbody tr td.editable:hover{background:var(--blue-wash);box-shadow:inset 0 0 0 1px var(--blue)}.badge{display:inline-flex;align-items:center;padding:2px 9px;border-radius:var(--r-sm);font-size:11.5px;font-weight:600;white-space:nowrap;border:1px solid transparent}.badge.blue{background:#eef4ff;color:#0047b3;border-color:#d3e2ff}.badge.green{background:#ecf7ef;color:var(--green-deep);border-color:#c9e6d2}.badge.amber{background:#fdf6e3;color:#8a6200;border-color:#eedfb4}.badge.orange{background:#fdf1ea;color:#a82400;border-color:#f0d4c6}.badge.purple{background:#f3eefb;color:var(--purple-deep);border-color:#ddd0f2}.badge.grey{background:var(--canvas);color:var(--ink-2);border-color:var(--line)}.subject{display:flex;align-items:center;gap:6px;margin-top:3px;font-weight:500;font-size:11.5px;color:var(--ink-3)}.subject.inline{display:inline-flex;margin-top:0}.subject i{width:7px;height:7px;border-radius:50%;flex:none}.empty{padding:50px 20px;text-align:center;color:var(--ink-3)}.empty svg{width:34px;height:34px;opacity:.3;margin-bottom:11px}.overlay{position:fixed;inset:0;background:#0c0c0c6b;display:flex;align-items:flex-start;justify-content:center;padding:46px 16px;z-index:100;overflow-y:auto}.modal{background:var(--surface);border-radius:var(--r-lg);box-shadow:0 10px 40px #0c0c0c33;width:100%;max-width:560px;overflow:hidden}.modal.wide{max-width:760px}.modal>header{padding:15px 18px;display:flex;align-items:center;border-bottom:1px solid var(--line)}.modal>header h2{font-size:15.5px}.modal>header .spacer{flex:1}.modal>.body{padding:18px;display:flex;flex-direction:column;gap:14px}.modal>footer{padding:14px 18px;border-top:1px solid var(--line);display:flex;gap:9px}.row2{display:grid;grid-template-columns:1fr 1fr;gap:13px}.row3{display:grid;grid-template-columns:repeat(3,1fr);gap:13px}.check{display:flex;align-items:center;gap:9px;cursor:pointer;padding:9px 12px;border:1px solid var(--line-2);border-radius:var(--r);font-weight:500}.check:has(input:checked){border-color:var(--blue);background:var(--blue-wash)}.check input{width:16px;height:16px;accent-color:var(--blue)}.alert{padding:11px 14px;border-radius:var(--r);font-size:12.5px;line-height:1.7}.alert.error{background:#fdf1ea;color:#a82400;border:1px solid #f0d4c6}.alert.info{background:var(--blue-wash);color:#0047b3;border:1px solid #d3e2ff}.alert.ok{background:#ecf7ef;color:var(--green-deep);border:1px solid #c9e6d2}.toasts{position:fixed;bottom:20px;left:20px;display:flex;flex-direction:column;gap:8px;z-index:200}.toast{background:var(--ink);color:#fff;padding:11px 16px;border-radius:var(--r);box-shadow:0 6px 22px #0c0c0c3d;font-size:12.5px;font-weight:500;max-width:390px}.toast.error{background:#a82400}.toast.ok{background:var(--green-deep)}.timeline{display:flex;flex-direction:column}.timeline .item{display:flex;gap:12px;padding:14px 0;border-bottom:1px solid var(--line)}.timeline .item:last-child{border-bottom:0}.timeline .dot{width:8px;height:8px;border-radius:50%;background:var(--blue);margin-top:6px;flex:none}.timeline .dot.create{background:var(--green-deep)}.timeline .dot.delete{background:#a82400}.timeline .dot.import{background:var(--purple-deep)}.timeline .meta{font-size:11.5px;color:var(--ink-3);margin-top:3px}.timeline .delta{margin-top:8px;display:flex;flex-direction:column;gap:4px;font-size:12.5px;border-inline-start:2px solid var(--line-2);padding:2px 11px}.timeline .delta span{color:var(--ink-2)}.timeline .delta .old{text-decoration:line-through;color:var(--ink-3)}.timeline .delta .new{color:var(--blue);font-weight:600}.tabs{display:inline-flex;margin-bottom:16px;border:1px solid var(--line-2);border-radius:var(--r);overflow:hidden;flex-wrap:wrap}.tabs button{background:var(--surface);border:0;border-inline-start:1px solid var(--line-2);padding:8px 16px;cursor:pointer;font-weight:500;color:var(--ink-2);font-size:12.5px;transition:background .12s,color .12s}.tabs button:last-child{border-inline-start:0}.tabs button:hover{background:var(--canvas)}.tabs button.active{background:var(--blue);color:#fff;font-weight:600}.login-page{min-height:100vh;display:grid;place-items:center;padding:24px;background:var(--canvas)}.login-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);width:100%;max-width:372px;overflow:hidden}.login-card .head{padding:26px 30px 22px;text-align:center;border-bottom:1px solid var(--line)}.login-card .mark{width:58px;color:var(--blue);margin-bottom:16px}.login-card .head h1{font-size:18px}.login-card .head .sub{color:var(--ink-3);font-size:12px;margin-top:5px}.login-card .form{padding:22px 30px 26px;display:flex;flex-direction:column;gap:14px}.login-foot{margin-top:16px;text-align:center;font-size:11.5px;color:var(--ink-3)}@media(max-width:900px){:root{--sidebar: 58px}.sidebar .brand b,.sidebar .brand span,.sidebar nav a span,.sidebar .who b,.sidebar .who i,.sidebar .who button{display:none}.sidebar .brand{justify-content:center;padding:15px 0}.sidebar .brand .mark{width:28px}.sidebar nav a{justify-content:center;padding:10px 0}.sidebar .who{padding:10px;text-align:center}.content,.topbar{padding-inline:14px}.row2,.row3{grid-template-columns:1fr}h1{font-size:17px}}.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(360px,1fr));gap:14px;align-items:start}.pcard{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);overflow:hidden;display:flex;flex-direction:column}.pcard>header{display:flex;align-items:center;gap:10px;padding:13px 15px;border-bottom:1px solid var(--line)}.pcard-dot{width:9px;height:9px;border-radius:50%;flex:none}.pcard-name{font-weight:700;font-size:14.5px;color:var(--ink)}.pcard-name:hover{color:var(--blue)}.pcard-meta{font-size:11.5px;color:var(--ink-3);margin-top:2px}.pcard-season{border-bottom:1px solid var(--line)}.pcard-season-head{display:flex;align-items:center;gap:8px;padding:9px 15px 7px;background:var(--canvas)}.pcard-season-name{font-weight:700;font-size:12.5px;padding-inline-start:9px;border-inline-start:3px solid currentColor;flex:1}.pcard-season-name.s0{color:var(--blue)}.pcard-season-name.s1{color:#b34000}.pcard-season-name.s2{color:var(--purple-deep)}.pcard-season-name.s3{color:var(--green-deep)}.pcard-season-name.s4{color:#0073ad}.courselist{list-style:none;margin:0;padding:0}.courselist li{display:flex;align-items:flex-start;gap:12px;padding:10px 15px;border-bottom:1px solid var(--line)}.courselist li:last-child{border-bottom:0}.courselist li.clickable{cursor:pointer}.courselist li.clickable:hover{background:var(--blue-wash)}.cl-main{flex:1;min-width:0}.cl-name{font-weight:600;font-size:13px;line-height:1.4}.cl-range{font-size:11.5px;color:var(--ink-3);margin-top:3px;line-height:1.5}.cl-price{text-align:left;flex:none;display:flex;flex-direction:column;align-items:flex-start}.cl-value{font-size:18px;font-weight:700;font-variant-numeric:tabular-nums}.cl-now{font-size:18px;font-weight:700;color:var(--green-deep);font-variant-numeric:tabular-nums}.cl-was{font-size:11.5px;color:var(--ink-3);text-decoration:line-through;font-variant-numeric:tabular-nums}.cl-until{font-size:10.5px;color:var(--green-deep)}.pcard-none{padding:22px 15px;font-size:12.5px;color:var(--ink-3);text-align:center}.pcard>footer{margin-top:auto;padding:11px 15px;display:flex;align-items:center;gap:10px}.pcard-link{font-size:12px;font-weight:600}.viewswitch{display:inline-flex;border:1px solid var(--line-2);border-radius:var(--r);overflow:hidden}.viewswitch button{background:var(--surface);border:0;border-inline-start:1px solid var(--line-2);padding:7px 14px;cursor:pointer;font-weight:500;color:var(--ink-2);font-size:12.5px}.viewswitch button:last-child{border-inline-start:0}.viewswitch button:hover{background:var(--canvas)}.viewswitch button.active{background:var(--blue);color:#fff;font-weight:600}tbody tr.clickable-row{cursor:pointer}tbody tr.clickable-row:hover td{background:var(--blue-wash)}.season-chip{display:inline-flex;padding:2px 9px;border-radius:var(--r-sm);font-size:11.5px;font-weight:600;border:1px solid currentColor}.season-chip.s0{color:var(--blue);background:#eef4ff}.season-chip.s1{color:#b34000;background:#fdf1ea}.season-chip.s2{color:var(--purple-deep);background:#f3eefb}.season-chip.s3{color:var(--green-deep);background:#ecf7ef}.season-chip.s4{color:#0073ad;background:#ebf6fc}
