:root{--bg:#f4f5f7;--card:#ffffff;--ink:#1f2430;--muted:#7a8290;--line:#e4e7ec;--accent:#dc2626;--accentink:#b91c1c;--radius:14px;--danger:#d64550;--ok:#2e9e5b}*{box-sizing:border-box}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Arial,sans-serif;background:var(--bg);color:var(--ink);-webkit-font-smoothing:antialiased}header{background:linear-gradient(135deg,#dc2626,#991b1b);color:#fff;padding:26px 22px 22px}header h1{margin:0;font-size:22px;font-weight:700;letter-spacing:.2px}header p{margin:6px 0 0;font-size:13px;opacity:.9}header .top-actions{display:flex;justify-content:flex-end;align-items:center;gap:10px;margin-bottom:8px}.wrap{max-width:1180px;margin:0 auto;padding:18px 16px 60px}.controls{display:flex;flex-wrap:wrap;gap:14px;align-items:center;margin:18px 0 22px}.seg{display:inline-flex;background:#e9ecf2;border-radius:11px;padding:4px;gap:3px}.seg button{border:0;background:transparent;padding:9px 16px;border-radius:8px;font-size:14px;font-weight:600;color:var(--muted);cursor:pointer;transition:.15s}.seg button.active{background:#fff;color:var(--accentink);box-shadow:0 1px 3px #0000001f}select,input[type=text],input[type=number]{font-size:14px;padding:9px 12px;border-radius:9px;border:1px solid var(--line);background:#fff;color:var(--ink);font-weight:600}select{min-width:170px;cursor:pointer}.pickwrap{display:flex;align-items:center;gap:9px}.pickwrap label{font-size:13px;color:var(--muted);font-weight:600}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:16px 16px 18px;margin-bottom:20px;box-shadow:0 1px 2px #141e3c0a}.card h2{margin:2px 0 14px;font-size:17px;display:flex;align-items:center;gap:10px}.swatch{width:16px;height:16px;border-radius:5px;border:1px solid rgba(0,0,0,.12);display:inline-block}table{border-collapse:separate;border-spacing:0;width:100%;font-size:13px;table-layout:fixed}th,td{border-bottom:1px solid var(--line);border-right:1px solid var(--line);padding:0;text-align:center;vertical-align:middle}table{border-top:1px solid var(--line);border-left:1px solid var(--line);border-radius:10px;overflow:hidden}thead th{background:#f0f2f6;font-weight:700;color:#39414f;padding:9px 4px;font-size:12.5px}tbody th{background:#f7f8fa;font-weight:700;color:#5a6373;width:56px;font-size:12.5px}tbody th .ptime{font-weight:600;color:var(--muted);font-size:9px;margin-top:2px;white-space:nowrap;line-height:1.1}td .cell{min-height:44px;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:6px 3px;line-height:1.15;height:100%;gap:2px}td .lbl{font-weight:700;font-size:13px}td .note{font-size:10.5px;color:#5c6472;opacity:.9;margin-top:1px}td.empty .cell{background:repeating-linear-gradient(45deg,#fafbfc,#fafbfc 6px,#f4f6f8 6px,#f4f6f8 12px)}tr.pause-row td{height:20px;padding:1px 6px;background:#eceef3;color:#5a6373;font-size:10.5px;font-weight:700;text-align:center;vertical-align:middle;letter-spacing:.4px;text-transform:uppercase}.legend{display:flex;flex-wrap:wrap;gap:8px 14px;margin-top:6px}.legend .it{display:flex;align-items:center;gap:6px;font-size:12px;color:#495060}.foot{font-size:11.5px;color:var(--muted);margin-top:10px;line-height:1.5}.daygrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:16px}@media(max-width:560px){.controls{gap:10px}.seg button{padding:8px 11px;font-size:13px}}.gp-layout{display:grid;grid-template-columns:1fr 240px;gap:18px;align-items:start}@media(max-width:900px){.gp-layout{grid-template-columns:1fr}}.teacher-sidebar{position:sticky;top:12px;display:flex;flex-direction:column;gap:8px}.chip{display:flex;align-items:center;gap:8px;background:#fff;border:1px solid var(--line);border-radius:10px;padding:8px 10px;cursor:grab;-webkit-user-select:none;user-select:none;font-size:13px;font-weight:600}.chip.dragging{opacity:.4}.chip .rest{margin-left:auto;font-weight:700;font-size:12px;color:var(--ok)}.chip .rest.over{color:var(--danger)}td.dropzone-hover .cell{outline:2px dashed var(--accent);outline-offset:-2px}.cell .pill{display:flex;align-items:center;gap:4px;font-size:11px;font-weight:700;background:#ffffffa6;border-radius:6px;padding:1px 5px;line-height:1.3}.cell .pill .swatch{width:9px;height:9px}.cell.linked{box-shadow:inset 0 0 0 3px var(--group-color, var(--accent))}.cell .card-menu-btn{position:absolute;top:2px;right:2px;font-size:11px;opacity:.5;cursor:pointer;border:0;background:none}td{position:relative}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#14192859;display:flex;align-items:center;justify-content:center;z-index:50}.modal{background:#fff;border-radius:14px;padding:20px;max-width:420px;width:92%;box-shadow:0 12px 40px #00000040}.modal h3{margin:0 0 12px;font-size:16px}.modal .row{display:flex;align-items:center;gap:8px;margin-bottom:10px}.modal .actions{display:flex;justify-content:flex-end;gap:8px;margin-top:16px}button.btn{border:0;border-radius:9px;padding:9px 14px;font-size:13px;font-weight:700;cursor:pointer}button.btn.primary{background:var(--accent);color:#fff}button.btn.ghost{background:#eef0f4;color:var(--ink)}button.btn.danger{background:#fdeceb;color:var(--danger)}button.btn.sort-btn{margin-left:auto;font-size:12.5px;padding:7px 12px}.drag-handle{display:inline-flex;align-items:center;cursor:grab;color:#b6bcc8;flex:0 0 auto;padding:0 2px}.drag-handle:hover{color:#8a91a0}.drag-handle:active{cursor:grabbing}.row.dragging{opacity:.45}.row.drag-over{box-shadow:inset 0 2px 0 0 var(--accent)}button.btn.danger.solid{background:var(--danger);color:#fff}button.btn.danger.solid:hover{background:#c23a44}.home-header{padding:0}.home-header .header-inner{max-width:1180px;margin:0 auto;padding:22px 16px;display:flex;align-items:center;justify-content:space-between;gap:16px}.brand{display:flex;align-items:center;gap:14px;min-width:0}.brand-mark{flex:0 0 auto;display:flex;filter:drop-shadow(0 6px 14px rgba(20,10,60,.28));border-radius:12px;box-shadow:0 0 0 1px #ffffff38}.brand-home{cursor:pointer;text-decoration:none;transition:transform .15s ease}.brand-home:hover{transform:translateY(-1px)}.breadcrumb{max-width:1180px;margin:0 auto;padding:16px 16px 0;display:flex;flex-wrap:wrap;align-items:center;gap:8px;font-size:13px}.breadcrumb a{color:var(--muted);text-decoration:none}.breadcrumb a:hover{color:var(--accentink);text-decoration:underline}.breadcrumb .bc-sep{color:#c3c8d2}.breadcrumb .bc-current{color:var(--ink);font-weight:600}.brand-text h1{margin:0;font-size:21px;font-weight:700;letter-spacing:-.2px;line-height:1.15}.brand-text p{margin:3px 0 0;font-size:13px;opacity:.85}.user-box{display:flex;align-items:center;gap:12px;flex:0 0 auto}.user-name{font-size:13.5px;font-weight:500;opacity:.95;white-space:nowrap}.btn.on-accent{background:#ffffff29;color:#fff}.btn.on-accent:hover{background:#ffffff47}@media(max-width:520px){.user-name,.brand-text p{display:none}}.tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(270px,1fr));gap:18px;margin-top:26px}.tile{position:relative;display:flex;flex-direction:column;background:var(--card);border:1px solid var(--line);border-radius:18px;padding:22px;text-align:left;cursor:pointer;min-height:172px;transition:transform .18s ease,box-shadow .18s ease,border-color .18s ease;-webkit-appearance:none;font-family:inherit}.tile:hover{box-shadow:0 16px 34px #1e285a1f;transform:translateY(-3px);border-color:transparent}.tile .tile-icon{width:48px;height:48px;border-radius:13px;display:flex;align-items:center;justify-content:center;margin-bottom:16px;color:#fff}.tile .tile-icon svg{width:25px;height:25px}.tile.active .tile-icon{background:linear-gradient(135deg,#dc2626,#991b1b)}.tile.disabled{cursor:default}.tile.disabled:hover{box-shadow:none;transform:none;border-color:var(--line)}.tile.disabled .tile-icon{background:#eef0f4;color:#9aa2b1}.tile.disabled h3,.tile.disabled p{color:#9aa2b1}.tile h3{margin:0 0 6px;font-size:17px;font-weight:700}.tile p{margin:0;font-size:13px;color:var(--muted);line-height:1.5}.tile .go{margin-top:auto;padding-top:16px;font-size:13px;font-weight:700;color:var(--accentink);display:flex;align-items:center;gap:6px}.tile .badge{align-self:flex-start;margin-top:auto;font-size:10.5px;font-weight:700;color:var(--muted);background:#eef0f4;border-radius:6px;padding:3px 8px}.app-footer{max-width:1180px;margin:44px auto 0;padding:18px 16px 26px;border-top:1px solid var(--line);display:flex;flex-wrap:wrap;justify-content:center;gap:8px 18px;font-size:12.5px;color:var(--muted)}.app-footer a{color:var(--muted);text-decoration:none}.app-footer a:hover{color:var(--ink);text-decoration:underline}.app-footer .sep{opacity:.5}.legal{line-height:1.65;font-size:14px}.legal h3{margin:22px 0 6px;font-size:15px}.legal p{margin:0 0 8px}.legal a{color:var(--accentink)}.login-logo{display:flex;justify-content:center;margin-bottom:6px}.plan-row{display:flex;align-items:center;gap:10px;padding:12px 4px;border-bottom:1px solid var(--line)}.plan-row:last-child{border-bottom:0}.plan-row .name{font-weight:700;flex:1;cursor:pointer}.plan-row .name:hover{color:var(--accentink);text-decoration:underline}.plan-row .meta{font-size:12px;color:var(--muted)}.badge{display:inline-block;font-size:10.5px;font-weight:700;color:var(--muted);background:#eef0f4;border-radius:6px;padding:2px 7px}.badge.role-editor{color:var(--accentink);background:#fdecec}.badge.role-viewer{color:#5a6373;background:#eef0f4}@media print{header{-webkit-print-color-adjust:exact;print-color-adjust:exact}.controls{display:none}body{background:#fff}}
