*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--bg:#1e2228;--card-bg:#272d35;--card-border:#3b424d;--text:#dce1e8;--text-dim:#8891a0;--text-bright:#fff;--accent:#5ba4cf;--warn:#ffb74d;--danger:#ef5350;--success:#81c784;--font-base:1.25rem;--font-lg:1.5rem;--font-xl:1.75rem;--font-clock:3.5rem;--radius:12px;--gap:.4rem}html,body{background:var(--bg);height:100%;color:var(--text);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:var(--font-base);-webkit-font-smoothing:antialiased;line-height:1.4;overflow:hidden}#app{flex-direction:column;height:100%;display:flex}.dashboard-header{padding:.5rem var(--gap);background:var(--card-bg);border-bottom:1px solid var(--card-border);align-items:center;gap:var(--gap);flex-shrink:0;grid-template-columns:1.6fr 1.6fr 1.2fr;display:grid}.header-date{font-size:var(--font-lg);color:var(--accent);text-transform:capitalize;text-align:center;font-weight:600}.header-clock{font-size:var(--font-clock);color:var(--text-bright);font-variant-numeric:tabular-nums;text-align:center;font-weight:300}.header-status{color:var(--text-dim);justify-content:flex-end;align-items:center;gap:.5rem;font-size:.9rem;display:flex}.status-label{align-items:center;gap:.5rem;display:flex}.status-dot{border-radius:50%;width:10px;height:10px;display:inline-block}.status-dot.ok{background:var(--success)}.status-dot.warn{background:var(--warn)}.status-dot.error{background:var(--danger)}.dashboard-grid{gap:var(--gap);padding:var(--gap);flex:1;grid-template-rows:1fr 1fr;grid-template-columns:1.6fr 1.6fr 1.2fr;min-height:0;display:grid}.widget-card{background:var(--card-bg);border:1px solid var(--card-border);border-radius:var(--radius);flex-direction:column;display:flex;overflow:hidden}.widget-header{border-bottom:1px solid var(--card-border);flex-shrink:0;justify-content:space-between;align-items:center;padding:.5rem .75rem;display:flex}.widget-title{color:var(--text-bright);font-size:1.1rem;font-weight:600}.widget-meta{color:var(--text-dim);align-items:center;gap:.4rem;font-size:.75rem;display:flex}.widget-meta.stale{color:var(--warn)}.widget-body{flex:1;min-height:0;padding:.5rem .75rem;overflow-y:auto}.widget-body::-webkit-scrollbar{width:4px}.widget-body::-webkit-scrollbar-thumb{background:var(--card-border);border-radius:2px}.widget-empty{height:100%;color:var(--text-dim);justify-content:center;align-items:center;font-style:italic;display:flex}.schedule-content{flex-direction:column;height:100%;display:flex}.week-day{margin-bottom:1.25rem}.week-day-label{color:var(--accent);border-bottom:1px solid var(--card-border);margin:0 0 .4rem;padding-bottom:.2rem;font-size:.95rem;font-weight:600}.schedule-columns{flex:1;gap:1rem;min-height:0;display:flex}.student-column{flex:1;min-width:0;overflow-y:auto}.student-name{color:var(--accent);margin-bottom:.25rem;font-size:1rem;font-weight:600}.student-hours{color:var(--text-dim);font-weight:400}.lesson{border-bottom:1px solid var(--card-border);align-items:baseline;gap:.75rem;padding:.3rem 0;display:flex}.lesson:last-child{border-bottom:none}.lesson-time{font-variant-numeric:tabular-nums;color:var(--text-dim);white-space:nowrap;min-width:5.5rem;font-size:.9rem}.lesson-subject{color:var(--text-bright);font-size:.95rem;font-weight:500}.lesson-subject--highlight{color:var(--warn);font-weight:700}.lesson.current{background:#4fc3f71a;border-radius:6px;margin:0 -.4rem;padding:.3rem .4rem}.weather-main{align-items:center;gap:1rem;margin-bottom:.5rem;display:flex}.weather-temp{color:var(--text-bright);font-size:3rem;font-weight:300;line-height:1}.weather-temp .unit{color:var(--text-dim);font-size:1.5rem}.weather-temp-range{white-space:nowrap}.weather-condition{color:var(--text);font-size:1.1rem}.weather-season{color:var(--text-dim);margin-top:.4rem;font-size:.85rem}.weather-sun{color:var(--text-dim);font-variant-numeric:tabular-nums;margin-top:.4rem;font-size:.85rem}.season-current{font-weight:600}.season-pending{background:var(--card-bg-hover,#ffffff0a);border:1px solid var(--card-border);border-radius:6px;flex-wrap:wrap;align-items:center;gap:.6rem;margin-bottom:.75rem;padding:.6rem .8rem;font-size:.9rem;display:flex}.season-pending-icon{font-size:1.1rem}.season-pending-label{font-weight:600}.season-pending-count{font-variant-numeric:tabular-nums;color:var(--text)}.season-pending-since{color:var(--text-dim);font-size:.85rem}.season-footer{color:var(--text-dim);text-align:center;margin-top:.75rem;font-size:.8rem}.weather-summary{color:var(--text);border-top:1px solid var(--card-border);white-space:pre-line;margin-top:.5rem;padding-top:.5rem;font-size:.95rem;line-height:1.5}.weather-day-label{color:var(--text-dim);align-self:flex-end;margin-bottom:.3rem;font-size:1.1rem}.weather-details{color:var(--text-dim);gap:1.5rem;margin-top:.5rem;font-size:.9rem;display:flex}.weather-clickable{border-radius:6px;margin:-.25rem;padding:.25rem;transition:background .15s}.weather-clickable:hover{background:#64b5f60f}.weather-source-line{border-radius:4px;margin:-.1rem -.3rem;padding:.1rem .3rem;transition:background .15s}.weather-source-line:hover{background:#64b5f61a}.confidence-high{color:var(--success)}.confidence-medium{color:var(--warn)}.confidence-low{color:var(--danger)}.weather-pollen{color:var(--text-dim);border-radius:4px;margin:.1rem -.3rem 0;padding:.15rem .3rem;font-size:.85rem;transition:background .15s}.weather-pollen:hover{background:#64b5f61a}.pollen-day-divider{border-top:1px solid var(--card-border);margin:.5rem 0}.pollen-day-header{color:var(--accent);margin-bottom:.25rem;font-size:.85rem;font-weight:600}.pollen-day-row{justify-content:space-between;padding:.15rem 0;font-size:.9rem;display:flex}.pollen-day-empty{color:var(--text-dim);padding:.15rem 0;font-size:.85rem}.pollen-none{color:var(--text-dim)}.pollen-low{color:var(--success)}.pollen-medium{color:var(--warn)}.pollen-high{color:var(--danger)}.compare-table{border-collapse:collapse;width:100%;font-size:.9rem}.compare-table th{color:var(--text-dim);text-align:left;border-bottom:1px solid var(--card-border);padding:.3rem .4rem;font-size:.85rem;font-weight:600}.compare-table td{vertical-align:middle;border-bottom:1px solid #3b424d66;padding:.25rem .4rem}.compare-hour{color:var(--accent);font-variant-numeric:tabular-nums;white-space:nowrap}.compare-icon{width:1.5rem;padding-right:0;font-size:1rem}.compare-data{flex-direction:column;gap:0;line-height:1.3;display:flex}.compare-temp{color:var(--text-bright);font-weight:500}.compare-wind{color:var(--text-dim);font-size:.8rem}.compare-precip{color:var(--accent);font-size:.8rem}.compare-empty{color:var(--text-dim);text-align:center}.weather-tabs{border-bottom:1px solid var(--card-border);gap:.3rem;margin-bottom:.75rem;display:flex}.weather-tab{color:var(--text-dim);cursor:pointer;background:0 0;border:none;border-bottom:2px solid #0000;margin-bottom:-1px;padding:.4rem .8rem;font-size:.9rem}.weather-tab:hover{color:var(--text-bright)}.weather-tab--active{color:var(--accent);border-bottom-color:var(--accent)}.day-list{margin:0;padding:0;list-style:none}.day-row{border-bottom:1px solid #3b424d66;grid-template-columns:5rem 1.8rem 4.2rem 3.2rem 6.5rem 1fr auto;align-items:center;gap:.5rem;padding:.5rem .2rem;font-size:.9rem;display:grid}.day-sun{color:var(--text-dim);font-variant-numeric:tabular-nums;white-space:nowrap;font-size:.8rem}.day-precip{color:var(--accent);font-variant-numeric:tabular-nums;white-space:nowrap;font-size:.85rem}.day-confidence{white-space:nowrap;font-size:.75rem;font-weight:500}.day-confidence--na{color:var(--text-dim)}.day-row:last-child{border-bottom:none}.day-weekday{color:var(--accent);font-variant-numeric:tabular-nums;white-space:nowrap;font-weight:600}.day-date{color:var(--text-dim);font-variant-numeric:tabular-nums;font-size:.85rem}.day-icon{text-align:center;font-size:1.3rem}.day-temp{color:var(--text-bright);font-variant-numeric:tabular-nums;font-weight:500}.day-text{color:var(--text-dim);font-size:.85rem}.list-item{border-bottom:1px solid var(--card-border);padding:.3rem 0}.list-item:last-child{border-bottom:none}.list-meta{font-variant-numeric:tabular-nums;color:var(--accent);white-space:nowrap;text-overflow:ellipsis;font-size:.85rem;overflow:hidden}.list-item--today .list-meta{color:var(--warn);font-weight:700}.list-title{color:var(--text-bright);text-overflow:ellipsis;white-space:nowrap;font-size:.95rem;overflow:hidden}.calendar-content{flex-direction:column;height:100%;display:flex}.calendar-events{flex:1;overflow-y:auto}.countdown-footer{border-top:1px solid var(--card-border);border-bottom:none}.clickable{cursor:pointer}.clickable:active{background:#64b5f614}.modal-backdrop{z-index:1000;background:#0009;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal-card{background:var(--card-bg);border:1px solid var(--card-border);border-radius:var(--radius);width:90%;max-width:620px;max-height:80vh;padding:1.25rem;position:relative;overflow-y:auto}.modal-close{color:var(--text-dim);cursor:pointer;background:0 0;border:none;padding:.25rem .5rem;font-size:1.25rem;line-height:1;position:absolute;top:.75rem;right:.75rem}.modal-title{color:var(--text-bright);margin-bottom:.75rem;padding-right:2rem;font-size:1.2rem;font-weight:600}.modal-meta-row{flex-wrap:wrap;align-items:center;gap:.5rem;margin-bottom:1rem;display:flex}.modal-tag{color:var(--accent);background:#4fc3f726;border-radius:4px;padding:.15rem .5rem;font-size:.85rem}.modal-date{color:var(--text-dim);font-size:.9rem}.modal-text{color:var(--text);white-space:pre-line;font-size:1rem;line-height:1.6}.modal-text--empty{color:var(--text-dim);font-style:italic}.modal-summary{background:var(--card-bg-alt,#0000000a);border-left:3px solid var(--accent,#4a90e2);border-radius:4px;margin-bottom:1rem;padding:.75rem 1rem}.modal-summary__label{text-transform:uppercase;letter-spacing:.05em;color:var(--text-dim);margin-bottom:.4rem;font-size:.8rem}.modal-summary__text{color:var(--text);white-space:pre-line;margin:0;font-size:.95rem;line-height:1.5}.placeholder-widget{border:2px dashed var(--card-border);border-radius:var(--radius);height:100%;color:var(--text-dim);justify-content:center;align-items:center;font-style:italic;display:flex}@media (orientation:portrait) and (width>=600px){:root{--font-base:1.1rem;--font-lg:1.25rem;--font-xl:1.5rem;--font-clock:2.75rem;--gap:.5rem}.dashboard-header{grid-template-columns:1fr auto 1fr}.dashboard-grid{grid-template-rows:1fr 1fr 1fr;grid-template-columns:1fr 1fr}.dashboard-grid>:first-child{order:1}.dashboard-grid>:nth-child(3){order:2}.dashboard-grid>:nth-child(2){order:3}.dashboard-grid>:nth-child(5){order:4}.dashboard-grid>:nth-child(4){order:5}.dashboard-grid>:nth-child(6){order:6}}@media (width<=600px){:root{--font-base:1rem;--font-lg:1.15rem;--font-clock:2rem;--gap:.5rem}html,body{height:auto;overflow:auto}#app{height:auto;min-height:100vh}.dashboard-header{padding:.4rem var(--gap);gap:.25rem var(--gap);grid-template-rows:auto auto;grid-template-columns:1fr auto}.header-date{text-align:left;grid-area:1/1;font-size:.9rem}.header-clock{font-size:var(--font-clock);text-align:center;grid-area:2/1/auto/-1}.header-status{grid-area:1/2;font-size:.8rem}.dashboard-grid{padding:var(--gap);gap:var(--gap);flex:none;grid-template-rows:auto;grid-template-columns:1fr;overflow:visible}.widget-card{max-height:none}.widget-body{max-height:50vh}.schedule-columns{flex-direction:column;gap:.5rem;height:auto}.student-column{overflow-y:visible}.weather-temp{font-size:2rem}.weather-details{flex-wrap:wrap;gap:.75rem}.dashboard-grid>:first-child{order:2}.dashboard-grid>:nth-child(2){order:3}.dashboard-grid>:nth-child(3){order:1}.dashboard-grid>:nth-child(4){order:5}.dashboard-grid>:nth-child(5){order:4}.dashboard-grid>:nth-child(6){order:6}.modal-card{width:95%;max-height:85vh}}.bring-popup{background:var(--card-bg);border:1px solid var(--card-border);border-radius:var(--radius);flex-direction:column;width:90%;max-width:480px;max-height:80vh;padding:1.25rem;display:flex;position:relative;overflow:hidden}.bring-add-section{border-bottom:1px solid var(--card-border);padding-bottom:.75rem}.bring-add-row{align-items:center;gap:.4rem;display:flex}.bring-add-input-wrap{flex:1;position:relative}.bring-add-input{background:var(--bg);border:1px solid var(--card-border);width:100%;color:var(--text-bright);box-sizing:border-box;border-radius:4px;outline:none;padding:.4rem .5rem;font-size:.9rem}.bring-add-input:focus{border-color:var(--accent,#64b5f6)}.bring-add-btn{background:var(--accent,#64b5f6);color:var(--bg,#1a1a2e);cursor:pointer;border:none;border-radius:4px;padding:.4rem .7rem;font-size:1.1rem;font-weight:700;line-height:1}.bring-add-btn:disabled{opacity:.4;cursor:not-allowed}.bring-dropdown{background:var(--card-bg);border:1px solid var(--card-border);z-index:10;border-radius:0 0 4px 4px;max-height:200px;position:absolute;top:100%;left:0;right:0;overflow-y:auto}.bring-dropdown-item{cursor:pointer;justify-content:space-between;align-items:center;padding:.35rem .5rem;font-size:.9rem;display:flex}.bring-dropdown-item:hover{background:#64b5f61a}.bring-dropdown-name{color:var(--text-bright)}.bring-dropdown-cat{color:var(--text-dim);font-size:.75rem}.bring-confirmation{color:var(--success,#66bb6a);padding-top:.3rem;font-size:.8rem}.bring-popup-body{flex:1;min-height:0;padding-top:.5rem;overflow-y:auto}.bring-popup-body::-webkit-scrollbar{width:4px}.bring-popup-body::-webkit-scrollbar-thumb{background:var(--card-border);border-radius:2px}.bring-group-label{color:var(--text-dim);text-transform:uppercase;letter-spacing:.03em;padding:.5rem 0 .2rem;font-size:.8rem;font-weight:600}.bring-group-label--urgent{color:var(--danger)}.bring-row{border-bottom:1px solid var(--card-border);cursor:pointer;border-radius:4px;align-items:center;gap:.5rem;padding:.4rem .25rem;transition:background .15s;display:flex}.bring-row:hover{background:#64b5f60f}.bring-row:active{background:#64b5f61f}.bring-row:last-child{border-bottom:none}.bring-row--busy{opacity:.5;pointer-events:none}.bring-row-name{color:var(--text-bright);font-size:.95rem}.bring-row--urgent .bring-row-name{font-weight:600}.bring-row-tag{color:var(--text-dim);white-space:nowrap;background:#8891a01a;border-radius:4px;margin-left:auto;padding:.1rem .4rem;font-size:.75rem}.bring-row--urgent .bring-row-tag{color:var(--danger);background:#ef535026;font-weight:600}.status-popup{background:var(--card-bg);border:1px solid var(--card-border);border-radius:var(--radius);flex-direction:column;width:90%;max-width:420px;max-height:80vh;display:flex;overflow:hidden}.status-popup-body{flex:1;min-height:0;padding:.5rem .75rem;overflow-y:auto}.status-popup-body::-webkit-scrollbar{width:4px}.status-popup-body::-webkit-scrollbar-thumb{background:var(--card-border);border-radius:2px}.status-row{border-bottom:1px solid var(--card-border);border-radius:4px;align-items:center;gap:.5rem;padding:.4rem .25rem;transition:background .15s;display:flex}.status-row:hover{background:#64b5f60f}.status-row:active{background:#64b5f61f}.status-row:last-of-type{border-bottom:none}.status-row--busy{opacity:.5;pointer-events:none}.status-row-name{color:var(--text-bright);font-size:.95rem}.status-row-action{color:var(--text-dim);white-space:nowrap;background:#8891a01a;border-radius:4px;padding:.1rem .4rem;font-size:.75rem}.status-row-time{color:var(--text-dim);white-space:nowrap;margin-left:auto;font-size:.8rem}.status-error{color:var(--danger);padding:.3rem .25rem .3rem 1.5rem;font-size:.85rem}.status-stale{color:var(--warn);padding:.3rem .25rem .3rem 1.5rem;font-size:.85rem}.header-clock[data-v-1fa982d8]{position:relative}.bring-alert[data-v-1fa982d8]{border:1px solid var(--card-border);white-space:nowrap;border-radius:6px;align-items:center;gap:.3rem;padding:.15rem .5rem;font-size:.85rem;display:flex;position:absolute;top:50%;right:-1rem;transform:translate(100%,-50%)}.bring-alert--urgent[data-v-1fa982d8]{border-color:var(--danger);animation:2s ease-in-out infinite pulse-alert-1fa982d8}@keyframes pulse-alert-1fa982d8{0%,to{border-color:var(--danger);box-shadow:0 0 3px #ef535033}50%{border-color:#ff7043;box-shadow:0 0 12px #ef535066}}.bring-alert-label[data-v-1fa982d8]{color:var(--text-dim);font-weight:600}.bring-alert--urgent .bring-alert-label[data-v-1fa982d8]{color:var(--danger)}.bring-alert-items[data-v-1fa982d8]{color:var(--text-bright)}.bring-alert-sep[data-v-1fa982d8],.bring-alert-dim[data-v-1fa982d8]{color:var(--text-dim)}@media (width<=600px){.bring-alert[data-v-1fa982d8]{justify-content:center;margin-top:.25rem;font-size:.8rem;position:static;transform:none}}
