:root{--bg: #f5f5f7;--card: #ffffff;--card-hover: #fbfbfd;--field: #ffffff;--text: #1d1d1f;--muted: #6e6e73;--border: rgba(0, 0, 0, .1);--hairline: rgba(0, 0, 0, .07);--shadow: 0 1px 2px rgba(0, 0, 0, .04);--shadow-lift: 0 8px 24px rgba(0, 0, 0, .09);--radius: 12px;--accent: #0071e3;--accent-soft: rgba(0, 113, 227, .09);--on-accent: #ffffff;--ok-fg: #1f8a3d;--ok-strong: #34c759;--ok-bg: rgba(52, 199, 89, .1);--ok-border: rgba(52, 199, 89, .45);--warn-fg: #aa5500;--warn-strong: #ff9500;--warn-bg: rgba(255, 149, 0, .1);--warn-border: rgba(255, 149, 0, .5);--info-fg: #8540a8;--info-strong: #af52de;--info-bg: rgba(175, 82, 222, .09);--info-border: rgba(175, 82, 222, .45);--neutral-bg: rgba(0, 0, 0, .05);--neutral-fg: #6e6e73;--star: #e8a30d;--danger: #d70015;--toast-bg: rgba(44, 44, 48, .92);--toast-fg: #f5f5f7}@media(prefers-color-scheme:dark){:root{--bg: #131316;--card: #1d1d20;--card-hover: #232327;--field: #232327;--text: #f5f5f7;--muted: #98989d;--border: rgba(255, 255, 255, .14);--hairline: rgba(255, 255, 255, .09);--shadow: 0 1px 2px rgba(0, 0, 0, .4);--shadow-lift: 0 8px 28px rgba(0, 0, 0, .5);--accent: #0a84ff;--accent-soft: rgba(10, 132, 255, .16);--ok-fg: #30d158;--ok-strong: #30d158;--ok-bg: rgba(48, 209, 88, .14);--ok-border: rgba(48, 209, 88, .4);--warn-fg: #ffa423;--warn-strong: #ff9f0a;--warn-bg: rgba(255, 159, 10, .13);--warn-border: rgba(255, 159, 10, .42);--info-fg: #c97ef5;--info-strong: #bf5af2;--info-bg: rgba(191, 90, 242, .14);--info-border: rgba(191, 90, 242, .42);--neutral-bg: rgba(255, 255, 255, .08);--neutral-fg: #98989d;--star: #ffd60a;--danger: #ff453a;--toast-bg: rgba(245, 245, 247, .95);--toast-fg: #1d1d1f}}*{box-sizing:border-box}*{scrollbar-width:thin;scrollbar-color:color-mix(in srgb,var(--muted) 35%,transparent) transparent}*::-webkit-scrollbar{width:6px;height:6px}*::-webkit-scrollbar-track{background:transparent}*::-webkit-scrollbar-thumb{background:color-mix(in srgb,var(--muted) 30%,transparent);border-radius:980px}*::-webkit-scrollbar-thumb:hover{background:color-mix(in srgb,var(--muted) 55%,transparent)}*::-webkit-scrollbar-corner{background:transparent}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,SF Pro Text,Segoe UI Variable Text,Segoe UI,Roboto,Helvetica,Arial,sans-serif;background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}h1,h2,h3,h4{margin:.35em 0;letter-spacing:-.022em;font-weight:650}.muted{color:var(--muted)}.small{font-size:.85em}.warn{color:var(--warn-fg)}.spacer{flex:1}.icon{flex-shrink:0;vertical-align:-.15em}.inline-icon{vertical-align:-2px;margin-right:1px}.star-color{color:var(--star)}.logomark{display:inline-grid;place-items:center;background:var(--accent);color:#fff;border-radius:27%;vertical-align:-.32em}button{font:inherit;cursor:pointer;background:var(--accent);color:var(--on-accent);border:none;border-radius:980px;padding:8px 18px;font-weight:500;display:inline-flex;align-items:center;justify-content:center;gap:6px;transition:filter .15s,transform .06s,background .15s}button:hover{filter:brightness(1.07)}button:active{transform:scale(.98)}button:disabled{opacity:.45;cursor:default}button.link{background:none;color:var(--accent);padding:4px 8px;font-weight:500}button.link:hover{filter:none;text-decoration:underline}button.link.danger{color:var(--danger)}input,select{font:inherit;padding:9px 12px;border:1px solid var(--border);border-radius:10px;background:var(--field);color:var(--text);transition:border-color .15s,box-shadow .15s}input:focus,select:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3.5px var(--accent-soft)}input::placeholder{color:var(--muted)}.error{background:color-mix(in srgb,var(--danger) 9%,var(--card));color:var(--danger);border:1px solid color-mix(in srgb,var(--danger) 30%,transparent);border-radius:10px;padding:9px 14px;margin:8px 0;font-size:.9em}.loading{padding:60px;text-align:center;color:var(--muted)}.topbar{display:flex;align-items:center;gap:18px;padding:10px 22px;background:color-mix(in srgb,var(--card) 82%,transparent);backdrop-filter:saturate(1.8) blur(18px);-webkit-backdrop-filter:saturate(1.8) blur(18px);border-bottom:1px solid var(--hairline);position:sticky;top:0;z-index:10;flex-wrap:wrap}.brand{font-weight:700;font-size:1.02em;letter-spacing:-.02em;display:inline-flex;align-items:center;gap:8px}.topbar nav{display:flex;gap:2px;flex:1;flex-wrap:wrap}.topbar nav a{text-decoration:none;color:var(--muted);font-weight:500;font-size:.92em;padding:7px 13px;border-radius:980px;transition:background .15s,color .15s;white-space:nowrap;display:inline-flex;align-items:center;gap:7px}.topbar nav a:hover{background:var(--neutral-bg);color:var(--text)}.topbar nav a.active{background:var(--accent-soft);color:var(--accent)}.userbox{display:flex;align-items:center;gap:8px}.username{font-weight:500;font-size:.92em}.avatar{display:inline-grid;place-items:center;width:29px;height:29px;border-radius:50%;color:#fff;font-size:.7em;font-weight:700;flex-shrink:0;letter-spacing:.02em}main{max-width:1100px;margin:0 auto}.page{padding:22px 22px 72px}.page-wide{max-width:none}.login-wrap{min-height:100vh;display:grid;place-items:center;padding:20px}.login-card{background:var(--card);border:1px solid var(--hairline);border-radius:18px;box-shadow:var(--shadow-lift);padding:40px 36px;width:min(380px,94vw);display:flex;flex-direction:column;gap:13px;text-align:center}.login-logo{margin-bottom:2px}.login-card h1{margin:0;font-size:1.5em}.login-card .muted{margin:0 0 8px;font-size:.92em}.progress-summary{display:grid;gap:14px;background:var(--card);border:1px solid var(--hairline);border-radius:var(--radius);box-shadow:var(--shadow);padding:18px 22px;margin-bottom:14px}.progress-head{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}.progress-head h2{margin:0;font-size:1.12em}.progress-chips{display:flex;gap:6px;flex-wrap:wrap}.pbar-label{font-size:.86em;margin-bottom:5px;color:var(--muted)}.pbar-label strong{color:var(--text);font-weight:600}.pbar-track{height:8px;background:var(--neutral-bg);border-radius:980px;overflow:hidden}.pbar-fill{height:100%;background:var(--ok-strong);border-radius:980px;transition:width .4s cubic-bezier(.2,.8,.2,1)}.final-priority{background:var(--card);border:1px solid var(--hairline);border-radius:var(--radius);box-shadow:var(--shadow);padding:16px 22px;margin-bottom:14px;display:grid;gap:12px}.final-priority-head{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}.final-priority-head h3{margin:0;font-size:1em}.final-priority-head p{margin:3px 0 0}.final-ranking{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:8px}.final-rank-card{display:flex;align-items:center;gap:12px;text-align:left;background:var(--card);color:var(--text);border:1px solid var(--border);border-radius:12px;padding:11px 14px;font-weight:400}.final-rank-card:hover{filter:none;background:var(--card-hover);border-color:var(--accent)}.final-rank-card.blocked{opacity:.6}.rank-number{display:grid;place-items:center;width:26px;height:26px;border-radius:50%;background:var(--neutral-bg);color:var(--muted);font-size:.8em;font-weight:650;flex-shrink:0}.rank-main{display:flex;flex-direction:column;gap:1px;min-width:0;flex:1}.rank-main strong{font-size:.92em;font-weight:600}.rank-metric{display:flex;flex-direction:column;align-items:center;line-height:1.1;color:var(--muted);font-size:.7em;flex-shrink:0}.rank-metric strong{font-size:1.7em;color:var(--accent);font-weight:650}.legend{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-bottom:14px}.chip{font-size:.76em;font-weight:550;padding:4px 11px;border-radius:980px;border:1px solid var(--border);background:var(--card);color:var(--neutral-fg);white-space:nowrap;display:inline-flex;align-items:center;gap:5px}.chip.ok{background:var(--ok-bg);border-color:var(--ok-border);color:var(--ok-fg)}.chip.small{margin-left:8px}.enabled-chip{background:color-mix(in srgb,var(--star) 10%,var(--card));border-color:color-mix(in srgb,var(--star) 50%,transparent);color:var(--star)}.chip.status-cursando{background:var(--warn-bg);border-color:var(--warn-border);color:var(--warn-fg)}.chip.status-final_pendiente{background:var(--info-bg);border-color:var(--info-border);color:var(--info-fg)}.chip.status-aprobada{background:var(--ok-bg);border-color:var(--ok-border);color:var(--ok-fg)}.chip.status-pendiente{background:var(--card)}.year-block{margin-bottom:16px}.year-block h2{font-size:.78em;text-transform:uppercase;letter-spacing:.08em;font-weight:600;color:var(--muted);border-bottom:1px solid var(--hairline);padding-bottom:7px}.semester-row{display:flex;gap:12px;margin-bottom:12px;align-items:flex-start}.sem-label{font-weight:650;color:var(--muted);min-width:36px;padding-top:16px;font-size:.85em;display:flex;justify-content:center}.subject-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(178px,1fr));gap:10px;flex:1}.subject-card{position:relative;border:1px solid var(--hairline);border-radius:var(--radius);padding:12px 13px 10px;cursor:pointer;background:var(--card);box-shadow:var(--shadow);display:flex;flex-direction:column;gap:5px;min-height:70px;-webkit-user-select:none;user-select:none;transition:transform .12s,box-shadow .15s,background .15s,opacity .15s}.subject-card:hover{transform:translateY(-1px);box-shadow:var(--shadow-lift)}.subject-card.hito{border-style:dashed;border-color:var(--border)}.subject-card.enabled{border-color:color-mix(in srgb,var(--star) 55%,var(--hairline))}.subject-card .star{position:absolute;top:9px;right:10px;color:var(--star);line-height:0}.subject-name{font-size:.84em;font-weight:600;line-height:1.3;padding-right:16px}.card-foot{display:flex;align-items:center;justify-content:space-between;gap:6px;margin-top:auto}.subject-status{font-size:.72em;font-weight:500;color:var(--muted);display:inline-flex;align-items:center;gap:5px}.lock-badge{font-size:.66em;font-weight:600;color:var(--warn-fg);background:var(--warn-bg);border:1px solid var(--warn-border);border-radius:980px;padding:2px 8px;white-space:nowrap;display:inline-flex;align-items:center;gap:3px}.enroll-badge{font-size:.68em;font-weight:550;color:var(--accent);background:var(--accent-soft);border-radius:980px;padding:2px 9px;align-self:flex-start;display:inline-flex;align-items:center;gap:4px}.elective-tag{font-size:.76em;font-weight:550;color:var(--accent)}.subject-card .elective-tag{font-size:.72em}.subject-card.status-cursando{background:var(--warn-bg);border-color:var(--warn-border)}.subject-card.status-final_pendiente{background:var(--info-bg);border-color:var(--info-border)}.subject-card.status-aprobada{background:var(--ok-bg);border-color:var(--ok-border)}.subject-card.status-aprobada .subject-name{opacity:.72}.subject-card.status-cursando .subject-status{color:var(--warn-fg)}.subject-card.status-final_pendiente .subject-status{color:var(--info-fg)}.subject-card.status-aprobada .subject-status{color:var(--ok-fg)}.dot{width:7px;height:7px;border-radius:50%;flex-shrink:0;background:color-mix(in srgb,var(--muted) 55%,transparent)}.dot.status-cursando{background:var(--warn-strong)}.dot.status-final_pendiente{background:var(--info-strong)}.dot.status-aprobada{background:var(--ok-strong)}.filters{display:flex;flex-wrap:wrap;gap:7px;align-items:center;margin-bottom:16px}.filter-chip{background:var(--card);color:var(--muted);border:1px solid var(--border);border-radius:980px;padding:5px 14px;font-size:.82em;font-weight:500}.filter-chip:hover{filter:none;border-color:var(--accent);color:var(--text)}.filter-chip.active{background:var(--text);border-color:var(--text);color:var(--bg)}.filters-hint{margin-left:auto}.subject-card.filtered-out{opacity:.16}.subject-grid.hovering .subject-card:not(.hover-self):not(.rel-req):not(.rel-dep){opacity:.45}.subject-card.rel-req{box-shadow:0 0 0 2px var(--warn-strong),var(--shadow);opacity:1}.subject-card.rel-dep{box-shadow:0 0 0 2px var(--accent),var(--shadow);opacity:1}.subject-card.hover-self{opacity:1}.rel-tag{position:absolute;top:-9px;left:8px;font-size:.6em;font-weight:650;text-transform:uppercase;letter-spacing:.05em;border-radius:980px;padding:2px 8px}.rel-tag.req{background:var(--warn-strong);color:#fff}.rel-tag.dep{background:var(--accent);color:#fff}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0000006b;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);display:grid;place-items:center;z-index:50;padding:18px;animation:fade-in .15s ease}.modal{background:var(--card);border:1px solid var(--hairline);border-radius:18px;box-shadow:var(--shadow-lift);width:min(520px,100%);max-height:86vh;overflow-y:auto;padding:22px 24px;display:flex;flex-direction:column;gap:14px;animation:pop-in .2s cubic-bezier(.2,.9,.3,1.08)}@keyframes fade-in{0%{opacity:0}}@keyframes pop-in{0%{opacity:0;transform:scale(.96) translateY(6px)}}.modal-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}.modal-head h3{margin:0 0 2px;font-size:1.1em}.close-btn{color:var(--muted);background:var(--neutral-bg);border-radius:50%;width:30px;height:30px;padding:0}.close-btn:hover{text-decoration:none;color:var(--text)}.modal-elective{width:100%}.segmented{display:grid;grid-template-columns:repeat(4,1fr);gap:2px;background:var(--neutral-bg);border-radius:10px;padding:2px}.segmented.two{grid-template-columns:repeat(2,1fr)}.segment{background:transparent;color:var(--muted);border:none;border-radius:8px;padding:8px 6px;font-size:.8em;font-weight:550}.segment:hover{filter:none;color:var(--text)}.segment.active{background:var(--card);box-shadow:0 1px 4px #0000001f}.segment.active.status-pendiente{color:var(--text)}.segment.active.status-cursando{color:var(--warn-fg)}.segment.active.status-final_pendiente{color:var(--info-fg)}.segment.active.status-aprobada{color:var(--ok-fg)}.banner{border-radius:10px;padding:10px 14px;font-size:.87em;line-height:1.5}.banner .icon{vertical-align:-2px;margin-right:3px}.banner.ok{background:var(--ok-bg);color:var(--ok-fg)}.banner.warn{background:var(--warn-bg);color:var(--warn-fg)}.banner.info{background:var(--accent-soft);color:var(--accent)}.modal-cols{display:grid;grid-template-columns:1fr 1fr;gap:16px}.modal-cols h4{margin:0 0 8px;font-size:.72em;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);font-weight:600}.dot-list{list-style:none;margin:0;padding:0;display:grid;gap:7px;font-size:.86em}.dot-list li{display:flex;align-items:baseline;gap:7px;flex-wrap:wrap}.dot-list .dot{align-self:center}.term-bar{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:8px}.term-bar h2{margin:0;font-size:1.3em}.my-enrollments{background:var(--card);border:1px solid var(--hairline);border-radius:var(--radius);box-shadow:var(--shadow);padding:12px 18px;margin-bottom:16px}.my-enrollments h3{font-size:.92em}.enrollment-row{display:flex;gap:10px;align-items:center;padding:9px 0;border-bottom:1px solid var(--hairline);flex-wrap:wrap;font-size:.94em}.enrollment-row:last-child{border-bottom:none}.candidate-list{display:grid;gap:8px}.candidate{background:var(--card);border:1px solid var(--hairline);border-radius:var(--radius);box-shadow:var(--shadow);padding:11px 16px;transition:border-color .15s}.candidate:hover{border-color:var(--border)}.candidate.enabled{border-color:color-mix(in srgb,var(--star) 55%,var(--hairline))}.candidate-head{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}.candidate-title{display:inline-flex;align-items:center;gap:6px;flex-wrap:wrap;font-size:.95em;font-weight:550}.enroll-form{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px;padding-top:12px;border-top:1px dashed var(--border)}.enroll-form input,.enroll-form select{flex:1;min-width:140px}.form-actions{display:flex;gap:6px;align-items:center}.board-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(330px,1fr));gap:12px;margin:16px 0}.board-card{background:var(--card);border:1px solid var(--hairline);border-radius:var(--radius);box-shadow:var(--shadow);padding:14px 18px}.board-card-head{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:8px}.board-card-head h3{font-size:.98em;margin:0}.count-badge{font-size:.76em;font-weight:600;background:var(--accent-soft);color:var(--accent);border-radius:980px;padding:3px 10px;white-space:nowrap;display:inline-flex;align-items:center;gap:4px}.person-row{display:flex;gap:10px;align-items:center;padding:7px 9px;border-radius:10px}.person-row.match{background:var(--ok-bg)}.person-info{display:flex;flex-direction:column;gap:1px;min-width:0;font-size:.94em}.match-note{font-size:.84em;font-weight:550;color:var(--ok-fg);margin-top:8px;display:flex;align-items:center;gap:5px}.join-btn{width:100%;margin-top:10px;background:var(--accent-soft);color:var(--accent);font-weight:550}.join-btn:hover{background:var(--accent);color:var(--on-accent);filter:none}.empty-state{text-align:center;padding:64px 20px;color:var(--muted)}.empty-icon{display:block;margin-bottom:10px;opacity:.5}.map-hint-up{color:var(--warn-fg);font-weight:600}.map-hint-down{color:var(--accent);font-weight:600}.map-scroll{overflow:auto;border:1px solid var(--hairline);border-radius:var(--radius);background:var(--card);box-shadow:var(--shadow)}.map-svg{display:block}.map-col-label{fill:var(--muted);font-size:11px;font-weight:600;text-anchor:middle;text-transform:uppercase;letter-spacing:.06em}.map-col-divider{stroke:var(--hairline)}.map-edge{fill:none;stroke:color-mix(in srgb,var(--muted) 32%,transparent);stroke-width:1.5;transition:stroke .15s,opacity .15s}.map-edge.up{stroke:var(--warn-strong);stroke-width:2.5}.map-edge.down{stroke:var(--accent);stroke-width:2.5}.map-edge.faded{opacity:.1}.map-node{cursor:pointer;transition:opacity .15s}.map-node rect{fill:var(--card);stroke:var(--border);stroke-width:1;transition:stroke .15s}.map-node text{fill:var(--text);font-size:11px;font-weight:500;text-anchor:middle;pointer-events:none}.map-node.status-cursando rect{fill:var(--warn-bg);stroke:var(--warn-border)}.map-node.status-final_pendiente rect{fill:var(--info-bg);stroke:var(--info-border)}.map-node.status-aprobada rect{fill:var(--ok-bg);stroke:var(--ok-border)}.map-node.enabled rect{stroke:color-mix(in srgb,var(--star) 70%,transparent);stroke-width:1.5}.map-node.active rect{stroke:var(--accent);stroke-width:2.5}.map-node.up rect{stroke:var(--warn-strong);stroke-width:2}.map-node.down rect{stroke:var(--accent);stroke-width:2}.map-node.faded{opacity:.2}.map-node.simulated rect{stroke:var(--ok-strong);stroke-width:2;stroke-dasharray:5 4}.map-node.sim-enabled rect{stroke:var(--star);stroke-width:2;stroke-dasharray:5 4}.map-actions{display:flex;align-items:center;gap:8px}.sim-mode-button{background:var(--card);color:var(--text);border:1px solid var(--border);font-weight:500;font-size:.88em}.sim-mode-button:hover{filter:none;border-color:var(--accent)}.sim-mode-button.active{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}.simulation-panel{display:flex;align-items:center;gap:12px;flex-wrap:wrap;background:var(--card);border:1px solid var(--hairline);border-radius:var(--radius);box-shadow:var(--shadow);padding:12px 16px;margin-bottom:12px}.simulation-picked{display:flex;gap:6px;flex-wrap:wrap;align-items:center}.sim-chip{background:var(--accent-soft);color:var(--accent);border:none;border-radius:980px;padding:5px 12px;font-size:.82em;font-weight:550}.sim-chip:hover{background:var(--accent);color:var(--on-accent);filter:none}.simulation-preview{max-width:480px}main:has(.board-canvas-page){max-width:none}.board-canvas-page{width:100%}.day-board{display:grid;grid-auto-flow:column;grid-auto-columns:clamp(280px,28vw,360px);gap:14px;align-items:start;overflow-x:auto;overflow-y:visible;padding:2px 4px 12px;scroll-snap-type:x proximity;scrollbar-gutter:stable}.day-column{min-width:0;height:fit-content;scroll-snap-align:start;border-top:5px solid var(--day-color);background:color-mix(in srgb,var(--day-color) 6%,var(--card));border-radius:var(--radius);padding:12px;box-shadow:var(--shadow)}.day-column-head{display:flex;align-items:center;gap:10px;margin-bottom:12px}.schedule-color{width:15px;height:34px;border-radius:980px;background:var(--day-color);box-shadow:0 0 0 4px color-mix(in srgb,var(--day-color) 18%,transparent)}.day-card-list{display:grid;gap:10px}.schedule-card{position:relative;overflow:hidden}.schedule-card-stripe{position:absolute;inset:0 auto 0 0;width:5px;background:linear-gradient(180deg,var(--shift-color),var(--campus-color))}.schedule-tags{display:flex;flex-wrap:wrap;gap:6px}.schedule-tag{display:inline-flex;align-items:center;border-radius:980px;padding:4px 9px;font-size:.78em;font-weight:700}.shift-tag{color:var(--shift-color);background:color-mix(in srgb,var(--shift-color) 12%,var(--card));border:1px solid color-mix(in srgb,var(--shift-color) 38%,transparent)}.campus-tag{color:var(--campus-color);background:color-mix(in srgb,var(--campus-color) 12%,var(--card));border:1px solid color-mix(in srgb,var(--campus-color) 38%,transparent)}.time-tag{color:var(--neutral-fg);background:var(--neutral-bg);border:1px solid var(--hairline)}.board-note{display:flex;align-items:flex-start;gap:8px;background:var(--warn-bg);color:var(--warn-fg);border:1px solid var(--warn-border);border-radius:10px;padding:9px 11px;font-weight:600;font-size:.9em}.board-note-toggle{justify-self:start;font-size:.84em}.board-note-form{display:grid;gap:8px}.board-note-form textarea{min-height:72px;resize:vertical;font:inherit;padding:9px 12px;border:1px solid var(--border);border-radius:10px;background:var(--field);color:var(--text)}.personal-note{display:inline-flex;align-items:center;width:fit-content;max-width:100%;background:var(--info-bg);color:var(--info-fg);border:1px solid var(--info-border);border-radius:8px;padding:4px 8px;font-size:.82em;font-weight:600}.login-links{display:flex;justify-content:center;gap:8px;flex-wrap:wrap}.account-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;align-items:start}.account-panel{background:var(--card);border:1px solid var(--hairline);border-radius:var(--radius);box-shadow:var(--shadow);padding:18px;display:grid;gap:13px}.account-wide{margin-top:14px}.account-panel-head{display:flex;justify-content:space-between;align-items:center;gap:10px}.field-stack{display:grid;gap:6px;color:var(--muted);font-size:.86em;font-weight:500}.field-stack input{font-size:1rem;font-weight:400}.check-row{display:flex;align-items:center;gap:9px;color:var(--muted);font-size:.9em}input[type=checkbox]{width:16px;height:16px;padding:0;accent-color:var(--accent)}.code-box{border:1px dashed var(--accent);background:var(--accent-soft);color:var(--accent);border-radius:10px;padding:12px 14px;text-align:center;font-family:ui-monospace,SFMono-Regular,Consolas,Liberation Mono,monospace;font-size:1.05em;font-weight:700;letter-spacing:.08em}.code-box.large{font-size:1.25em;padding:15px 18px}.danger-panel{border-color:color-mix(in srgb,var(--danger) 22%,var(--hairline))}.danger-button{background:var(--danger)}.backup-form{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.backup-form input[type=file]{max-width:320px}.table-list{display:grid;gap:8px}.table-row{display:flex;align-items:center;justify-content:space-between;gap:12px;border-top:1px solid var(--hairline);padding-top:9px}.table-row:first-child{border-top:none;padding-top:0}.table-row>div{display:grid;gap:2px}.reset-result{display:grid;gap:7px;border:1px solid var(--warn-border);background:var(--warn-bg);border-radius:10px;padding:12px}.invite-code{font-family:ui-monospace,SFMono-Regular,Consolas,Liberation Mono,monospace;color:var(--accent);font-weight:700;letter-spacing:.04em}.toasts{position:fixed;bottom:22px;left:50%;transform:translate(-50%);display:flex;flex-direction:column;align-items:center;gap:8px;z-index:100;pointer-events:none}.toast{background:var(--toast-bg);color:var(--toast-fg);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);font-size:.87em;font-weight:500;border-radius:980px;padding:10px 20px;box-shadow:var(--shadow-lift);animation:toast-in .25s cubic-bezier(.2,.9,.3,1.1)}@keyframes toast-in{0%{opacity:0;transform:translateY(12px)}}.confetti-layer{position:fixed;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;pointer-events:none;z-index:90}.confetti-piece{position:absolute;width:8px;height:12px;border-radius:2px;background:var(--confetti-color);animation:confetti-burst 1s ease-out forwards}@keyframes confetti-burst{0%{opacity:1;transform:translate(0) rotate(0) scale(1)}to{opacity:0;transform:translate(var(--x),var(--y)) rotate(var(--r)) scale(.7)}}.skeleton-screen{min-height:100vh;padding:14px 22px;background:var(--bg)}.skeleton-topbar,.skeleton-panel,.skeleton-card,.skeleton-pill,.skeleton-line{position:relative;overflow:hidden;background:var(--neutral-bg)}.skeleton-topbar:after,.skeleton-panel:after,.skeleton-card:after,.skeleton-pill:after,.skeleton-line:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;transform:translate(-100%);background:linear-gradient(90deg,transparent,rgba(255,255,255,.35),transparent);animation:skeleton-shimmer 1.35s infinite}@media(prefers-color-scheme:dark){.skeleton-topbar:after,.skeleton-panel:after,.skeleton-card:after,.skeleton-pill:after,.skeleton-line:after{background:linear-gradient(90deg,transparent,rgba(255,255,255,.07),transparent)}}.skeleton-topbar{height:54px;border-radius:14px;max-width:1060px;margin:0 auto 18px}.skeleton-shell{max-width:1060px;margin:0 auto;display:grid;gap:14px}.skeleton-panel{height:122px;border-radius:var(--radius)}.skeleton-lines{display:grid;gap:10px}.skeleton-line{height:14px;border-radius:980px}.skeleton-line.short{width:45%}.skeleton-pill{width:115px;height:28px;border-radius:980px}.skeleton-pills{display:flex;gap:8px;flex-wrap:wrap}.skeleton-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(175px,1fr));gap:10px}.skeleton-card{height:72px;border-radius:var(--radius)}@keyframes skeleton-shimmer{to{transform:translate(100%)}}.admin-subjects-table{width:100%;border-collapse:separate;border-spacing:0;font-size:.88em}.admin-subjects-table th{text-align:left;font-size:.72em;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-weight:600;padding:8px 10px;border-bottom:1px solid var(--hairline);position:sticky;top:0;background:var(--card);z-index:1}.admin-subjects-table td{padding:7px 10px;border-bottom:1px solid var(--hairline);vertical-align:middle}.admin-subjects-table tr:last-child td{border-bottom:none}.admin-subjects-table tr:hover td{background:var(--card-hover)}.admin-subjects-table input,.admin-subjects-table select{padding:5px 8px;font-size:.92em;border-radius:8px;width:100%}.admin-subjects-table .narrow{width:60px}.admin-subjects-table .mid{width:100px}.admin-year-divider td{background:var(--neutral-bg);font-weight:650;font-size:.78em;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);padding:9px 10px}.admin-year-divider:hover td{background:var(--neutral-bg)}.admin-actions{display:flex;gap:4px;align-items:center}.admin-actions button{padding:4px 10px;font-size:.84em;border-radius:8px}.admin-scroll{max-height:520px;overflow-y:auto;border:1px solid var(--hairline);border-radius:var(--radius)}.intermediate-badge{display:inline-flex;align-items:center;gap:4px;font-size:.72em;font-weight:600;color:var(--accent);background:var(--accent-soft);border:1px solid color-mix(in srgb,var(--accent) 30%,transparent);border-radius:980px;padding:2px 8px;white-space:nowrap}.admin-add-form{display:flex;gap:8px;flex-wrap:wrap;align-items:flex-end;padding:12px 0 0;border-top:1px dashed var(--border);margin-top:4px}.admin-add-form input,.admin-add-form select{min-width:120px;flex:1}.prereq-editor{display:grid;gap:12px}.prereq-selector{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.prereq-selector select{flex:1;min-width:200px}.prereq-list{display:flex;flex-wrap:wrap;gap:6px}.prereq-chip{display:inline-flex;align-items:center;gap:5px;font-size:.82em;font-weight:550;background:var(--neutral-bg);color:var(--text);border:1px solid var(--border);border-radius:980px;padding:5px 12px}.prereq-chip button{background:none;color:var(--danger);padding:0;width:18px;height:18px;border-radius:50%;font-size:.9em}.prereq-chip button:hover{background:color-mix(in srgb,var(--danger) 12%,transparent);filter:none}.prereq-subject-row{background:var(--card);border:1px solid var(--hairline);border-radius:var(--radius);padding:12px 16px;display:grid;gap:8px}.prereq-subject-head{display:flex;align-items:center;justify-content:space-between;gap:10px}.prereq-subject-head strong{font-size:.92em}.prereq-arrow{color:var(--muted);font-size:.78em;font-weight:600}.solo-cursar-toggle{display:flex;align-items:center;gap:10px;padding:10px 0;width:100%}.solo-cursar-toggle label{display:flex;align-items:center;gap:9px;cursor:pointer;font-size:.88em;font-weight:550;color:var(--text)}.solo-cursar-toggle input[type=checkbox]{width:18px;height:18px;accent-color:var(--accent);flex-shrink:0}.solo-cursar-hint{font-size:.8em;color:var(--muted);font-weight:400;margin-top:2px}.no-details-badge{display:inline-flex;align-items:center;gap:4px;font-size:.74em;font-weight:600;color:var(--neutral-fg);background:var(--neutral-bg);border:1px solid var(--border);border-radius:980px;padding:2px 9px}@media(max-width:640px){.topbar{gap:8px;padding:8px 12px;backdrop-filter:none;-webkit-backdrop-filter:none;background:var(--card)}.username{display:none}.page{padding:14px 12px 96px}.sem-label{min-width:28px}.subject-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr))}.filters-hint{display:none}.modal-cols{grid-template-columns:1fr}.segmented{grid-template-columns:repeat(2,1fr)}.final-priority-head{align-items:stretch}.final-ranking{grid-template-columns:1fr}.simulation-panel{align-items:flex-start}.account-grid{grid-template-columns:1fr}.account-panel{padding:15px}.board-canvas-page{padding-left:10px;padding-right:10px}.day-board{grid-auto-columns:minmax(82vw,82vw);gap:10px;padding-bottom:14px;scroll-snap-type:x mandatory}.topbar nav{position:fixed;bottom:0;left:0;right:0;background:color-mix(in srgb,var(--card) 90%,transparent);backdrop-filter:saturate(1.8) blur(18px);-webkit-backdrop-filter:saturate(1.8) blur(18px);border-top:1px solid var(--hairline);display:flex;justify-content:space-around;padding:7px 10px calc(7px + env(safe-area-inset-bottom));z-index:30}.topbar nav a{display:flex;flex-direction:column;align-items:center;gap:3px;font-size:.64em;font-weight:500;padding:4px 10px;border-radius:10px}.topbar nav a:hover{background:none}.topbar nav a.active{background:none;color:var(--accent)}.toasts{bottom:92px}}
