:root{--bg:#f1f5f9;--panel:#fff;--muted:#64748b;--text:#0f172a;--text-dim:#334155;--accent:#c8ae6e;--accent-2:#2563eb;--border:#e2e8f0;--danger:#ef4444}*{box-sizing:border-box}#root,body,html{height:100%}body{margin:0;font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,Helvetica Neue,Arial,"Apple Color Emoji","Segoe UI Emoji";background:var(--bg);color:var(--text)}.app-shell{display:flex;height:calc(100vh - 56px);grid-gap:12px;gap:12px;padding:12px}.top-header{height:56px;display:flex;align-items:center;justify-content:space-between;padding:0 16px;background:#0f172a;color:#fff;border-bottom:1px solid var(--border);font-weight:700}.roster-button{background:var(--accent);color:#fff;border:none;padding:8px 16px;border-radius:4px;font-weight:600;font-size:14px;cursor:pointer;transition:background-color .2s ease}.roster-button:hover{background:#b89d5a}.logout-button{background:transparent;color:#d1d5db;border:2px solid #d1d5db;padding:0;width:32px;height:32px;border-radius:6px;cursor:pointer;transition:all .2s ease;display:flex;align-items:center;justify-content:center}.logout-button:hover{background:rgba(209,213,219,.1);border-color:rgba(209,213,219,.8);color:#fff}.panel{flex:1 1;display:flex;flex-direction:column;border:1px solid var(--border);background:var(--panel);min-width:0;border-radius:12px;overflow:hidden}.panel:nth-child(2),.panel:nth-child(2) .panel-content,.panel:nth-child(3),.panel:nth-child(3) .panel-content{background:#f9f8f6}.panel-header{padding:12px 16px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--border);min-height:56px;background:#fff}.panel-header h2{margin:0;font-size:16px;font-weight:600}.panel-content{padding:12px;overflow:auto;flex:1 1}.search-bar{border-top:1px solid var(--border);border-bottom:1px solid var(--border);margin:0 -12px 12px;padding:8px 12px;background:#fff}.search-input{position:relative}.search-input input{padding-left:32px}.search-input .icon{left:10px;pointer-events:none}.search-input .clear-btn,.search-input .icon{position:absolute;top:50%;transform:translateY(-50%);color:var(--text-dim)}.search-input .clear-btn{right:8px;background:transparent;border:none;padding:4px;border-radius:6px;cursor:pointer}.search-input .clear-btn:hover{color:var(--text)}.row{align-items:center}.col,.row{display:flex;grid-gap:8px;gap:8px}.col{flex-direction:column}button,input,select,textarea{background:#fff;color:var(--text);border:1px solid var(--border);border-radius:6px;padding:8px 10px;font-size:14px}button{cursor:pointer;display:inline-flex;align-items:center;justify-content:center}button.primary{background:var(--accent);color:#000;border-color:transparent;border-radius:4px}button.secondary{background:#f1f5f9;color:#000}button.ghost{background:transparent;border-color:transparent;color:var(--text-dim)}button.danger{background:var(--danger);color:#000;border-color:transparent}button:disabled{opacity:.5;cursor:not-allowed;background:#e2e8f0!important;color:#94a3b8!important;border-color:#e2e8f0!important}.list{display:flex;flex-direction:column;grid-gap:6px;gap:6px}.list-item{display:flex;align-items:center;justify-content:space-between;padding:10px 12px;border:1px solid var(--border);border-radius:10px;background:#fff}.list-item.clickable{cursor:pointer}.list-item.selected{border:2px solid var(--accent)}.list-item .meta{color:#898d93;font-size:12px}.list-item .title{font-weight:600;font-size:14px;padding-bottom:5px}.section-tabs{display:flex;grid-gap:6px;gap:6px;flex-wrap:wrap}.section-tabs.wide{width:100%;grid-gap:0;gap:0}.section-tabs.wide .tab{flex:1 1;text-align:center}.tab{padding:8px 2px;border-radius:0;border:none;color:var(--text-dim);background:transparent;position:relative}.tab.active{color:var(--text)}.tab.active:after{content:"";position:absolute;left:0;right:0;bottom:-12px;height:2px;background:var(--accent);border-radius:999px}.course-tab{padding:6px 10px;border-radius:4px;border:1px solid var(--border);color:var(--text-dim);background:#fff;white-space:nowrap;font-size:13px}.course-tab.active{color:#000;background:var(--accent);border-color:transparent}.badge{font-size:12px;padding:2px 6px;border-radius:999px;background:#f1f5f9;border:1px solid var(--border);color:var(--text-dim)}.spacer{flex:1 1}.empty{color:var(--muted);text-align:center;padding:24px 8px}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr))}.grid,.item-card{grid-gap:8px;gap:8px}.item-card{border:1px solid var(--border);border-radius:10px;background:#fff;padding:10px;display:flex;flex-direction:column}.item-card .name{font-weight:600}.item-card .desc{color:var(--text-dim);font-size:12px}.item-card .price{font-weight:700}.nested-list{display:flex;flex-direction:column;grid-gap:16px;gap:16px}.section-group{margin-bottom:20px}.section-header{display:flex;align-items:center;grid-gap:8px;gap:8px;padding:12px 0;border-bottom:2px solid var(--accent);margin-bottom:12px}.section-header h3{margin:0;font-size:16px;font-weight:600}.section-icon{display:inline-flex;color:var(--accent)}.courses-list{display:flex;flex-direction:column;margin-left:16px}.course-group{margin-bottom:16px}.course-header{padding:8px 0;font-weight:600;font-size:14px;color:var(--text);margin-bottom:8px}.items-list{display:flex;flex-direction:column;margin-left:16px}.item-row{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border:1px solid var(--border);border-radius:8px;background:#fff;margin-bottom:8px}.item-row:last-child{margin-bottom:0}.item-name{font-weight:600;font-size:14px}.item-desc{color:#898d93;font-size:12px;margin-top:2px}.bin-btn{background:transparent;border:none;color:#a1a1a1;padding:6px;border-radius:6px;cursor:pointer;display:inline-flex;align-items:center;justify-content:center}.bin-btn:hover{background:rgba(239,68,68,.1);color:var(--danger)}.modal-backdrop{position:fixed;inset:0;background:rgba(2,6,23,.7);display:flex;align-items:center;justify-content:center;z-index:1100}.modal{width:96%;max-width:520px;background:#fff;border:1px solid var(--border);border-radius:12px;box-shadow:0 10px 30px rgba(0,0,0,.4);overflow:hidden}.modal-header{border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;background:#f8fafc}.modal-body,.modal-footer,.modal-header{padding:12px 16px}.modal-footer{display:flex;grid-gap:8px;gap:8px;justify-content:flex-end;background:#f8fafc}.modal-footer,.save-menu-area{border-top:1px solid var(--border)}.save-menu-area{padding:16px;background:var(--panel);flex-shrink:0}.panel:nth-child(3) .save-menu-area{background:#f9f8f6}.panel.disabled{opacity:.5;pointer-events:none;background:#f8fafc}.panel.disabled .panel-header{background:#e2e8f0;color:var(--text-dim)}.panel.disabled .panel-content{background:#f1f5f9}.panel:nth-child(2).disabled,.panel:nth-child(2).disabled .panel-content,.panel:nth-child(3).disabled,.panel:nth-child(3).disabled .panel-content{background:#f0f0ed}@keyframes dash{0%{stroke-dasharray:1,150;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-35}to{stroke-dasharray:90,150;stroke-dashoffset:-124}}.menu-roster-screen{position:fixed;top:0;left:0;width:100vw;height:100vh;background:var(--bg);z-index:1000;display:flex;flex-direction:column}.roster-header{height:56px;display:flex;align-items:center;justify-content:space-between;padding:0 16px;background:#0f172a;color:#fff;border-bottom:1px solid var(--border);font-weight:700}.roster-header h1{margin:0;font-size:18px;font-weight:700}.close-button{background:transparent;border:none;color:#fff;cursor:pointer;padding:8px;border-radius:4px;transition:background-color .2s ease;display:flex;align-items:center;justify-content:center}.close-button:hover{background:hsla(0,0%,100%,.1)}.roster-content{flex:1 1;padding:20px;overflow-y:auto;display:flex;flex-direction:column}.calendar-navigation{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px;padding:4px 0}.nav-button{background:var(--accent);color:#fff;border:none;padding:6px;border-radius:4px;cursor:pointer;transition:background-color .2s ease;display:flex;align-items:center;justify-content:center}.nav-button:hover{background:#b89d5a}.calendar-title{margin:0;font-size:18px;font-weight:600;color:var(--text)}.calendar-grid{flex:1 1;display:flex;flex-direction:column;background:var(--panel);border:1px solid var(--border);border-radius:12px;overflow:hidden;box-shadow:0 2px 8px rgba(0,0,0,.1)}.calendar-header{display:grid;grid-template-columns:repeat(7,1fr);background:var(--bg);border-bottom:2px solid var(--border)}.day-header{padding:16px 8px;text-align:center;font-weight:600;font-size:14px;color:var(--text-dim);text-transform:uppercase;letter-spacing:.5px}.calendar-days{display:grid;grid-template-columns:repeat(7,1fr);flex:1 1}.calendar-day{border-right:1px solid var(--border);border-bottom:1px solid var(--border);min-height:80px;display:flex;align-items:flex-start;justify-content:flex-start;padding:8px;position:relative}.calendar-day:nth-child(7n){border-right:none}.calendar-day.empty-day{background:#f8fafc}.calendar-day.has-day{background:var(--panel);cursor:pointer;transition:background-color .2s ease}.calendar-day.has-day:hover{background:#f1f5f9}.day-number{font-size:16px;font-weight:500;color:var(--text);padding:4px 8px;border-radius:4px;transition:background-color .2s ease}.calendar-day.has-day:hover .day-number{background:var(--accent);color:#fff}.menu-assignment{position:absolute;left:4px;right:4px;height:30px;font-size:11px;font-weight:600;padding:0 6px 0 0;border-radius:4px;border:1px solid #ddd;background:#f4f4f4;color:#000;display:flex;align-items:center;justify-content:flex-start;line-height:1.2;overflow:hidden}.menu-name{flex:1 1;text-align:left;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-left:6px;font-weight:400}.menu-type-indicator{width:30px;height:30px;display:flex;align-items:center;justify-content:center;border-radius:3px;font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;flex-shrink:0;color:#fff}.menu-type-indicator.ftt{background:#626262}.menu-type-indicator.pm{background:#c8ae6e}.menu-assignment.ftt{background:#f4f4f4;bottom:4px}.menu-assignment.pm{background:#f4f4f4;bottom:38px}input[type=checkbox]{-webkit-appearance:none;appearance:none;width:18px;height:18px;border:2px solid var(--border);border-radius:4px;background:#fff;cursor:pointer;position:relative;transition:all .2s ease;margin:0;padding:0}input[type=checkbox]:hover{border-color:var(--accent);background:rgba(200,174,110,.1)}input[type=checkbox]:checked{background:var(--accent);border-color:var(--accent)}input[type=checkbox]:checked:after{content:"";position:absolute;left:6px;top:3px;width:4px;height:8px;border:solid #fff;border-width:0 2px 2px 0;transform:rotate(45deg)}input[type=checkbox]:focus{outline:none;box-shadow:0 0 0 3px rgba(200,174,110,.2)}.checkbox-label{display:flex;align-items:center;grid-gap:8px;gap:8px;cursor:pointer;padding:8px 12px;border-radius:6px;transition:background-color .2s ease}.checkbox-label:hover{background:rgba(200,174,110,.05)}.checkbox-label input[type=checkbox]{flex-shrink:0}.checkbox-label input[type=radio]{flex-shrink:0;-webkit-appearance:none;appearance:none;width:12px;height:12px;border:none;background:transparent;cursor:pointer;position:relative;transition:all .2s ease;box-sizing:border-box}.checkbox-label input[type=radio]:before{content:"";position:absolute;top:0;left:0;width:12px;height:12px;border:2px solid var(--border);border-radius:50%;background:transparent;transition:all .2s ease}.checkbox-label input[type=radio]:checked:before{border-color:var(--accent);background:var(--accent)}.checkbox-label input[type=radio]:hover:before{border-color:var(--accent)}.checkbox-label span{font-size:14px;color:var(--text);font-weight:500}.login-container{min-height:100vh;align-items:stretch;background:#fff}.login-container,.login-left-section{display:flex;overflow:hidden;position:relative}.login-left-section{flex:0 0 60%;background-size:cover;background-position:50%;background-repeat:no-repeat;align-items:center;justify-content:center}.login-brand-text{position:relative;z-index:2;color:#fff;font-size:4rem;font-weight:600;letter-spacing:4px;text-align:center;font-family:serif}.login-brand-logo{position:absolute;top:40px;left:40px;z-index:2;max-width:250px;height:auto}.login-right-section{flex:0 0 40%;display:flex;flex-direction:column;align-items:center;justify-content:center;background:#fff;padding:40px}.login-form-container{width:100%;max-width:400px;padding:0}.login-form-header{margin-bottom:40px}.login-form-header h2{margin:0;color:#333;font-size:1.5rem;font-weight:600;text-align:left;font-family:sans-serif}.login-form{margin:0}@keyframes spin{to{transform:rotate(1turn)}}.form-group{margin-bottom:24px}.form-group label{display:block;margin-bottom:8px;color:#333;font-weight:500;font-size:.9rem;text-transform:none}.form-group input{width:100%;padding:14px 16px;background:#fff;border:1px solid #c8ae6e;border-radius:8px;font-size:1rem;transition:border-color .3s ease,box-shadow .3s ease;box-sizing:border-box;color:#333}.form-group input::placeholder{color:#999}.form-group input:focus{outline:none;border-color:#c8ae6e;box-shadow:0 0 0 3px rgba(200,174,110,.1)}.form-group input:disabled{background-color:#f5f5f5;cursor:not-allowed}.error-message{background-color:#fee;color:#c33;padding:12px;border-radius:6px;margin-bottom:20px;text-align:center;font-size:.9rem;border:1px solid #fcc}.login-button{width:100%;padding:14px;background:#c8ae6e;color:#fff;border:none;border-radius:8px;font-size:1rem;font-weight:600;cursor:pointer;transition:transform .2s ease,box-shadow .2s ease,background .2s ease;display:flex;align-items:center;justify-content:center;margin-top:8px}.login-button:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 4px 12px rgba(200,174,110,.4);background:#b89d5e}.login-button:disabled{background:#ccc;cursor:not-allowed;transform:none}.login-version{position:absolute;bottom:20px;right:20px;color:#999;font-size:.875rem;font-weight:400;z-index:10}@media (max-width:900px){.login-container{flex-direction:column}.login-left-section{flex:0 0 40%}.login-right-section{flex:0 0 60%;padding:30px 20px}.login-brand-text{font-size:3rem;letter-spacing:2px}.login-form-container{max-width:100%}}.error-modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.5);display:flex;align-items:center;justify-content:center;z-index:10000;animation:fadeIn .2s ease}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.error-modal{background:#fff;border-radius:12px;box-shadow:0 10px 30px rgba(0,0,0,.3);max-width:500px;width:90%;max-height:80vh;overflow:hidden;animation:slideUp .3s ease}@keyframes slideUp{0%{transform:translateY(30px);opacity:0}to{transform:translateY(0);opacity:1}}.error-modal-header{display:flex;align-items:center;justify-content:space-between;padding:20px;border-bottom:1px solid #e2e8f0;background:#f8fafc}.error-modal-header h3{margin:0;font-size:18px;font-weight:600;color:#ef4444}.error-modal-close{background:transparent;border:none;cursor:pointer;color:#64748b;padding:4px;display:flex;align-items:center;justify-content:center;transition:color .2s ease}.error-modal-close:hover{color:#0f172a}.error-modal-content{padding:20px;color:#334155;line-height:1.6}.error-modal-content p{margin:0;word-wrap:break-word}.error-modal-footer{padding:16px 20px;border-top:1px solid #e2e8f0;display:flex;justify-content:flex-end;background:#f8fafc}.error-modal-button{background:#c8ae6e;color:#fff;border:none;padding:10px 24px;border-radius:6px;font-weight:600;cursor:pointer;transition:background .2s ease}.error-modal-button:hover{background:#b89d5e}
/*# sourceMappingURL=main.0f23649c.chunk.css.map */