:root{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:#1a1b1e;background:#f7f6f3;font-size:16px;font-synthesis:none}*{box-sizing:border-box}body{margin:0}button,input,select,textarea{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.48}a{color:inherit}.app-shell{min-height:100vh;display:grid;grid-template-columns:224px minmax(0,1fr)}.sidebar{background:#fbfbfa;border-right:1px solid #e9e8e4;display:flex;flex-direction:column;padding:22px 12px 16px;position:sticky;top:0;height:100vh}.brand{display:flex;align-items:center;gap:11px;padding:3px 12px 24px;font-size:21px;font-weight:700;letter-spacing:-.7px}.brand-mark{display:grid;place-items:center;width:30px;height:30px;border-radius:8px;background:#1b1c1e;color:white;font-family:Georgia,serif;font-size:20px}.navigation{display:flex;flex-direction:column;gap:2px}.nav-heading{font-size:11px;letter-spacing:1.4px;text-transform:uppercase;color:#9a9ba0;font-weight:700;padding:21px 12px 8px}.nav-item{display:flex;align-items:center;gap:12px;width:100%;min-height:39px;border:0;border-radius:8px;background:none;color:#565a60;text-align:left;padding:8px 12px;font-size:14px;font-weight:550}.nav-item:hover{background:#efefec;color:#202124}.nav-item.active{background:#e9e9e6;color:#171819;font-weight:690}.nav-icon{width:18px;height:18px;stroke-width:1.8;flex:none}.nav-badge{margin-left:auto;font-size:11px;border-radius:20px;padding:2px 7px;background:#dededb}.sidebar-bottom{margin-top:auto;border-top:1px solid #ecebe7;padding-top:12px}.local-note{font-size:12px;color:#a0a1a4;padding:7px 12px}.main-column{min-width:0}.topbar{height:64px;background:rgba(255,255,255,.85);border-bottom:1px solid #ecebe7;display:flex;align-items:center;padding:0 30px;gap:15px;position:sticky;top:0;z-index:5;backdrop-filter:blur(14px)}.topbar-title{font-size:17px;font-weight:650;letter-spacing:-.4px}.topbar-meta{margin-left:auto;font-size:13px;color:#86898d}.mobile-brand{display:none}.view{max-width:1330px;margin:0 auto;padding:30px 32px 56px}.page-head{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;margin-bottom:22px}.page-title{font:600 34px/1.12 Georgia,"Times New Roman",serif;letter-spacing:-1.15px;margin:0 0 5px}.page-subtitle{margin:0;color:#85878d;font-size:14px}.page-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.grid-2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.stack{display:flex;flex-direction:column;gap:16px}.card{background:#fff;border:1px solid #ecebe7;border-radius:14px;padding:20px;box-shadow:0 1px 3px #1b1b1b08;min-width:0}.card-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:18px}.card-title{font-size:14px;font-weight:650;display:flex;align-items:center;gap:9px}.card-icon{width:17px;height:17px;color:#64666b}.micro{font-size:11px;letter-spacing:1.5px;text-transform:uppercase;font-weight:700;color:#9a9ca1}.big-class{font-size:23px;font-weight:660;letter-spacing:-.6px;margin:8px 0}.muted{color:#777b80}.faint{color:#9da0a4}.small{font-size:13px}.countdown{font-size:14px;font-weight:650;font-variant-numeric:tabular-nums}.pill{display:inline-flex;align-items:center;border:1px solid #e7e7e4;background:#f7f7f5;border-radius:20px;padding:5px 10px;font-size:12px;font-weight:650;white-space:nowrap}.pill.dark{background:#1b1c1e;color:#fff;border-color:#1b1c1e}.pill.red{color:#b33938;background:#fff0ef;border-color:#f5d2cf}.pill.orange{color:#a65b16;background:#fff5e8;border-color:#f4dfbf}.pill.yellow{color:#967115;background:#fff9e6;border-color:#ece0ae}.btn{border:1px solid #e2e2df;border-radius:9px;background:#fff;color:#202124;min-height:36px;padding:8px 13px;display:inline-flex;align-items:center;justify-content:center;gap:7px;font-size:13px;font-weight:620;text-decoration:none;transition:background .16s,transform .16s,border-color .16s}.btn:hover:not(:disabled){background:#f3f3f1}.btn:active:not(:disabled){transform:scale(.98)}.btn.primary{background:#1e1f20;border-color:#1e1f20;color:#fff}.btn.primary:hover:not(:disabled){background:#3a3b3e}.btn.danger{color:#b83a39}.btn.ghost{border-color:transparent;background:transparent}.btn.small{min-height:29px;padding:5px 9px;font-size:12px}.btn.icon-only{width:36px;padding:7px}.btn svg{width:15px;height:15px}.hairline{height:1px;background:#ecece9;margin:12px 0}.empty{display:flex;gap:12px;align-items:flex-start;color:#777b80;font-size:14px;line-height:1.5;padding:8px 0}.empty svg{width:18px;height:18px;flex:none;color:#a3a6a9}.row{display:flex;align-items:center;gap:11px;padding:10px 0;border-bottom:1px solid #f0f0ed}.row:last-child{border-bottom:none}.row-main{min-width:0;flex:1}.row-title{font-size:14px;font-weight:630;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.row-sub{font-size:12px;color:#92959a;margin-top:3px}.row-end{font-size:12px;color:#909398;white-space:nowrap}.progress{height:5px;background:#ebebe8;border-radius:9px;overflow:hidden;margin-top:12px}.progress>span{display:block;height:100%;background:#2e3032;border-radius:9px;transition:width .35s}.field{display:flex;flex-direction:column;gap:6px;margin-bottom:13px}.field label{font-size:13px;font-weight:640;color:#50545a}.field input,.field select,.field textarea{width:100%;border:1px solid #dfe0df;border-radius:8px;background:#fff;color:#202124;padding:9px 10px;min-height:38px;outline:none}.field textarea{resize:vertical;min-height:82px}.field input:focus,.field select:focus,.field textarea:focus,.paste-zone:focus{border-color:#777b80;box-shadow:0 0 0 3px #292b2d12}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 12px}.form-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:16px}.tabs{display:inline-flex;border:1px solid #e5e5e2;border-radius:9px;background:#f1f1ee;padding:3px;gap:2px}.tab{border:0;border-radius:6px;background:none;padding:7px 12px;color:#777b80;font-size:13px;font-weight:600}.tab.active{color:#1d1e20;background:#fff;box-shadow:0 1px 3px #00000012}.schedule-list{display:flex;flex-direction:column;gap:7px}.class-row{display:grid;grid-template-columns:82px 3px minmax(0,1fr) auto;gap:14px;align-items:stretch;border:1px solid #ecece9;border-radius:9px;background:#fff;padding:13px}.class-time{font-size:12px;line-height:1.6;color:#7b7f84;font-variant-numeric:tabular-nums}.class-time strong{display:block;color:#33363a}.class-accent{border-radius:4px;background:#252729}.class-name{font-size:15px;font-weight:650}.class-detail{font-size:12px;color:#979a9e;margin-top:4px}.schedule-toolbar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px}.weekday-tabs{display:flex;gap:5px;flex-wrap:wrap}.weekday-button{border:1px solid #e1e2df;background:#fff;border-radius:8px;padding:8px 12px;font-size:13px;font-weight:600;color:#72767c}.weekday-button.active{background:#1e1f20;border-color:#1e1f20;color:#fff}.day-switch{display:flex;align-items:center;gap:6px}.day-switch button{border:1px solid #e2e2df;border-radius:7px;padding:7px 11px;background:#fff;font-size:12px;font-weight:700;color:#73777d}.day-switch button.active{background:#1f2022;color:#fff;border-color:#1f2022}.notice{background:#f5f5f3;border:1px solid #e8e8e5;border-radius:10px;padding:12px 14px;color:#696d72;font-size:13px;line-height:1.5}.notice.error{background:#fff3f1;border-color:#f1d2ce;color:#a44840}.notice.success{background:#f0f7f2;border-color:#d2e5d8;color:#347350}.paste-zone{min-height:84px;border:1.5px dashed #cfd0cd;border-radius:10px;display:flex;align-items:center;justify-content:center;text-align:center;padding:14px;color:#777c81;background:#fafaf9;font-size:13px;outline:none}.paste-zone.ready{border-color:#8eab97;background:#f5faf6;color:#3f7651}.paste-zone:focus{background:#fff}.step-row{display:grid;grid-template-columns:28px 1fr;gap:12px;padding:12px 0}.step-number{width:27px;height:27px;background:#efefec;border-radius:50%;display:grid;place-items:center;font-size:12px;font-weight:700}.step-row:not(:last-child){border-bottom:1px solid #efefec}.step-title{font-size:14px;font-weight:650}.step-copy{font-size:12px;color:#92959a;margin:3px 0 9px;line-height:1.45}.sync-preview{display:grid;grid-template-columns:repeat(5,1fr);gap:7px}.preview-day{border:1px solid #e8e8e5;border-radius:8px;padding:10px}.preview-day b{font-size:12px}.preview-day span{display:block;font-size:12px;color:#85898d;margin-top:5px}.modal-backdrop{position:fixed;inset:0;background:#1011147d;z-index:20;display:grid;place-items:center;padding:20px}.modal{width:min(100%,620px);max-height:min(90vh,900px);overflow:auto;background:#fff;border-radius:16px;box-shadow:0 25px 90px #0004;padding:24px}.modal.wide{width:min(100%,820px)}.modal-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:18px}.modal-title{font:600 25px/1.2 Georgia,serif;margin:0}.modal-copy{color:#81858a;font-size:13px;line-height:1.55;margin:5px 0 0}.modal-close{border:0;background:#f2f2f0;border-radius:8px;width:30px;height:30px;font-size:19px;color:#676b70}.calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:7px}.calendar-label{text-align:center;font-size:11px;color:#999ca0;text-transform:uppercase;letter-spacing:1px;padding:4px 0}.calendar-cell{min-height:108px;background:#fff;border:1px solid #e9e9e6;border-radius:9px;padding:8px;min-width:0}.calendar-cell.outside{background:#f9f9f8;opacity:.45}.calendar-cell.today{border-color:#353638}.calendar-date{font-size:12px;color:#787c81;font-weight:650}.calendar-event{display:block;width:100%;border:0;border-radius:4px;background:#e8e9e8;padding:4px 6px;margin-top:6px;text-align:left;font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.calendar-due{font-size:11px;color:#8b6a39;margin-top:5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.color-dot{width:11px;height:11px;border-radius:50%;flex:none;border:1px solid #0001}.check{width:18px;height:18px;accent-color:#252729;cursor:pointer}.menu-image{display:block;width:100%;height:auto;max-height:590px;object-fit:contain;background:#f4f4f2;border-radius:8px}.color-input{width:44px!important;padding:2px!important;height:36px}.switch-line{display:flex;align-items:center;gap:10px;font-size:13px}.toast{position:fixed;right:22px;bottom:22px;background:#1e1f20;color:white;border-radius:10px;padding:11px 15px;font-size:13px;box-shadow:0 10px 30px #0003;z-index:40;max-width:min(350px,calc(100vw - 44px))}body[data-theme=dark]{color:#eee;background:#2b2d30}body[data-theme=dark] .sidebar,body[data-theme=dark] .topbar{background:#34363a;border-color:#45474b}body[data-theme=dark] .card,body[data-theme=dark] .modal,body[data-theme=dark] .class-row,body[data-theme=dark] .calendar-cell{background:#383a3e;border-color:#4a4c50}body[data-theme=dark] .nav-item,body[data-theme=dark] .muted{color:#bdc0c4}body[data-theme=dark] .nav-item.active,body[data-theme=dark] .nav-item:hover,body[data-theme=dark] .notice{background:#484b4f;color:#f2f2f2}body[data-theme=dark] .btn,body[data-theme=dark] input,body[data-theme=dark] select,body[data-theme=dark] textarea,body[data-theme=dark] .tab.active,body[data-theme=dark] .weekday-button,body[data-theme=dark] .day-switch button{background:#424449;color:#eee;border-color:#53565a}body[data-theme=dark] .btn.primary,body[data-theme=dark] .weekday-button.active,body[data-theme=dark] .day-switch button.active{background:#e9e9e7;color:#202124}body[data-theme=dark] .tabs,body[data-theme=dark] .paste-zone{background:#303235}body[data-theme=dark] .hairline,body[data-theme=dark] .row{border-color:#4d4f53}body[data-theme=dark] .hairline{background:#4d4f53}body[data-theme=dark] .page-subtitle,body[data-theme=dark] .row-sub,body[data-theme=dark] .class-detail{color:#afb2b6}@media(max-width:900px){.app-shell{grid-template-columns:185px minmax(0,1fr)}.view{padding:22px}.grid-2{grid-template-columns:1fr}.sync-preview{grid-template-columns:repeat(3,1fr)}}@media(max-width:650px){.app-shell{display:block}.sidebar{position:fixed;z-index:12;width:235px;transform:translateX(-100%);transition:transform .2s;box-shadow:15px 0 45px #0001}.sidebar.open{transform:translateX(0)}.mobile-brand{display:inline-flex;border:0;background:none;padding:5px;font-size:19px}.topbar{height:54px;padding:0 16px}.view{padding:22px 14px}.page-title{font-size:29px}.page-head{flex-wrap:wrap}.calendar-grid{gap:3px}.calendar-cell{min-height:75px;padding:4px}.calendar-event,.calendar-due{font-size:9px}.sync-preview{grid-template-columns:repeat(2,1fr)}.form-grid{grid-template-columns:1fr}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{transition:none!important;animation:none!important}}
