:root{font-family:Inter,ui-sans-serif,system-ui,-apple-system,Segoe UI,sans-serif;color:#25314a;background:#f6f8fc;font-synthesis:none}*{box-sizing:border-box}body{margin:0}button,input,select{font:inherit}button{cursor:pointer;border:0}button:disabled{opacity:.5;cursor:not-allowed}.shell{max-width:1510px;margin:auto;padding:22px 30px 60px}header,.brand,.header-actions,.toolbar,.week-control,.toggle,.modal-head,.modal-actions{display:flex;align-items:center;gap:12px}header{justify-content:space-between;margin-bottom:30px}.brand-icon{background:#5166de;color:#fff;border-radius:14px;padding:12px;display:flex}.brand h1{font-size:21px;margin:0}.brand p{margin:2px 0;color:#8b95a8;font-size:12px}.header-actions{flex-wrap:wrap}.cloud{display:flex;align-items:center;gap:6px;color:#8490a1;font-size:12px}.primary,.secondary{border-radius:9px;padding:11px 15px;display:inline-flex;align-items:center;justify-content:center;gap:7px;font-weight:600;font-size:13px}.primary{background:#5366df;color:#fff}.secondary{background:#fff;color:#48536c;border:1px solid #e4e8f0}.intro{background:linear-gradient(105deg,#edf0ff,#f7f8ff 70%);padding:26px 30px;border-radius:18px;display:flex;justify-content:space-between;gap:20px;margin-bottom:22px}.eyebrow{color:#6875d8;font-size:11px;font-weight:800;letter-spacing:1.6px}.intro h2{font-size:25px;margin:8px 0}.intro p{color:#79849a;font-size:13px;margin:0;max-width:600px}.summary{display:flex;align-items:center;gap:30px}.summary div{display:flex;flex-direction:column;gap:4px}.summary b{font-size:23px}.summary span{font-size:11px;color:#8994a5;max-width:110px}.layout{display:grid;grid-template-columns:minmax(0,1fr) 270px;gap:20px}.main,.side-card{background:#fff;border:1px solid #e9edf4;border-radius:15px}.main{padding:19px;min-width:0}.toolbar{justify-content:space-between;margin-bottom:18px;flex-wrap:wrap}.week-control button,.toggle button,.modal-head button{background:transparent;color:#69758a;padding:7px;border-radius:8px}.week-control strong{font-size:14px;min-width:174px;text-align:center}.week-control .today{background:#eef1ff;color:#5669db;font-size:12px;font-weight:700}.toggle{background:#f2f4f8;border-radius:9px;padding:3px;gap:0}.toggle button{font-size:12px;padding:7px 12px}.toggle button.active{background:#fff;color:#3441a0;box-shadow:0 1px 5px #0001}.calendar-scroll{overflow:auto}.calendar{min-width:760px;display:grid;grid-template-columns:54px repeat(7,minmax(95px,1fr));grid-template-rows:51px 884px;border:1px solid #e9edf4;border-radius:10px;overflow:hidden}.calendar.single{min-width:300px;grid-template-columns:54px 1fr}.time-head,.day-head{background:#fafbfe;border-bottom:1px solid #e9edf4}.day-head{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;color:#58637a;border-left:1px solid #edf0f5}.day-head span{font-size:11px}.day-head b{font-size:15px}.times{position:relative;color:#9ba5b5;font-size:10px}.times>div{height:52px;text-align:center;transform:translateY(-5px)}.day-column{position:relative;border-left:1px solid #e9edf4;background:repeating-linear-gradient(to bottom,#fff,#fff 51px,#edf0f5 51px,#edf0f5 52px)}.hour-line{height:52px}.event{position:absolute;left:3px;width:calc(100% - 6px);border-radius:7px;text-align:left;padding:6px 5px;color:#34425c;overflow:hidden;z-index:1;border-left:3px solid #ffffff80;box-shadow:0 1px 2px #0000000c}.event:hover{filter:brightness(.96);z-index:4}.event strong,.event small{display:block;font-size:10px;line-height:1.25;overflow:hidden;text-overflow:ellipsis}.event small{font-size:9px;margin-top:3px;opacity:.7}.event.optional{border:1px dashed #cba750}.calendar-note{font-size:11px;color:#8b95a7;margin:13px 0 0}aside{display:flex;flex-direction:column;gap:15px}.side-card{padding:19px}.side-card h3{font-size:15px;margin:0 0 7px}.muted{font-size:12px;line-height:1.6;color:#8a95a7;margin:0 0 16px}.subject{margin:17px 0}.subject-line{display:flex;justify-content:space-between;font-size:12px}.subject-line span,.legend span{display:flex;align-items:center;gap:7px}.subject-line i,.legend i{display:inline-block;width:10px;height:10px;border-radius:3px}.track{height:7px;background:#f0f2f6;border-radius:10px;overflow:hidden;margin-top:8px}.track div{height:100%;border-radius:10px}.wide{display:flex;align-items:center;justify-content:center;gap:7px;width:100%;border-radius:8px;padding:11px;background:#5668dd;color:#fff;font-weight:650;font-size:12px;margin-top:9px}.wide.outline{background:#fff;color:#5262c5;border:1px solid #dce1fa}.side-card input{width:100%;border:1px solid #dce1e9;padding:10px;border-radius:8px}.legend{display:grid;grid-template-columns:1fr 1fr;gap:12px 5px;font-size:11px;color:#758096}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#19233c80;display:flex;justify-content:center;align-items:center;z-index:10;padding:16px}.modal{background:#fff;width:100%;max-width:430px;padding:24px;border-radius:18px;box-shadow:0 20px 70px #0002}.modal-head{justify-content:space-between}.modal h3{margin:0 0 18px}.modal label{display:flex;flex-direction:column;gap:6px;font-size:12px;font-weight:650;color:#5a667c;margin:12px 0}.modal input,.modal select{border:1px solid #dfe4ed;border-radius:9px;padding:10px;width:100%;background:#fff;color:#27334c}.modal .two{display:grid;grid-template-columns:1fr 1fr;gap:12px}.modal .check{flex-direction:row;align-items:center}.modal .check input{width:auto}.modal-actions{justify-content:flex-end;margin-top:22px}.danger{background:#fff1f1;color:#bd3c4a;border-radius:8px;padding:10px;display:flex;gap:5px;margin-right:auto}.toast{position:fixed;bottom:22px;right:22px;background:#29354f;color:#fff;border-radius:10px;padding:13px 17px;display:flex;gap:15px;align-items:center;box-shadow:0 6px 25px #0002;font-size:13px;z-index:20;cursor:pointer}@media(max-width:1050px){.layout{grid-template-columns:1fr}aside{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}.intro{flex-direction:column}.summary{justify-content:flex-start}}@media(max-width:600px){.shell{padding:14px}.header-actions .secondary{display:none}.intro{padding:20px}.intro h2{font-size:21px}.summary{gap:20px}.summary b{font-size:19px}aside{grid-template-columns:1fr}.main{padding:12px}.header-actions{gap:5px}.cloud{display:none}.primary{padding:10px}.brand h1{font-size:17px}}
