:root{--fu-blue: #3c83d0;--fu-blue-dark: #2d6db3;--fu-text: #2b2f33;--fu-muted: #6b7480;--fu-border: #d9dee4;--fu-bg: #f3f5f7;--row-open: #3f7d24;--row-back: #c0661e;--row-closed: #cfd2d5;--frost: #e0566b;--frost-soft: rgba(224, 86, 107, .82);--chip-blue: #e7f0fb;font-family:Roboto,system-ui,sans-serif;color:var(--fu-text)}*{box-sizing:border-box}body{margin:0;background:var(--fu-bg)}button{font:inherit;cursor:pointer}button:focus-visible,select:focus-visible,input:focus-visible{outline:2px solid #ffb300;outline-offset:2px}.shell{height:100vh;display:flex;flex-direction:column;overflow:hidden}.topbar{display:flex;align-items:center;gap:1.5rem;background:var(--fu-blue);color:#fff;height:52px;padding:0 1rem;flex-shrink:0}.topbar-left{display:flex;align-items:center;gap:.75rem}.logo{width:30px;height:30px}.topbar-menu{background:none;border:none;color:#fff;font-size:1.05rem;font-weight:500}.kpis{display:flex;gap:1.75rem;margin:0;flex:1;justify-content:center}.kpis div{display:flex;flex-direction:column-reverse;align-items:center;line-height:1.1}.kpis dt{font-size:.7rem;opacity:.9}.kpis dd{margin:0;font-size:1.05rem;font-weight:700}.topbar-right{display:flex;align-items:center;gap:.6rem;font-size:.85rem}.topbar-chat{background:#ffffff29;border:1px solid rgba(255,255,255,.5);color:#fff;border-radius:4px;padding:.3rem .8rem}.avatar{width:28px;height:28px;border-radius:50%;background:#fff;color:var(--fu-blue);font-weight:700;font-size:.75rem;display:grid;place-items:center}.layout{flex:1;min-height:0;display:grid;grid-template-columns:220px minmax(0,1fr) 380px;grid-template-rows:minmax(0,1fr)}.sidebar{background:#fff;border-right:1px solid var(--fu-border);padding:.75rem;overflow-y:auto;display:flex;flex-direction:column;gap:.5rem;font-size:.82rem}.side-btn{width:100%;padding:.45rem .5rem;border:1px solid var(--fu-blue);border-radius:4px;background:#fff;color:var(--fu-blue);font-weight:500}.side-btn.primary{background:var(--fu-blue);color:#fff}.side-search{width:100%;padding:.45rem .5rem;border:1px solid var(--fu-border);border-radius:4px}.side-row{display:flex;justify-content:space-between;padding:.45rem .1rem;border-bottom:1px solid var(--fu-border);font-weight:500}.side-row .plus{color:var(--fu-blue);font-weight:700}.mini-cal{margin-top:.25rem}.mini-cal-head{display:flex;justify-content:space-between;padding:.25rem 0;color:var(--fu-muted)}.mini-cal-head strong{color:var(--fu-text)}.mini-cal-grid{display:grid;grid-template-columns:repeat(7,1fr);text-align:center;gap:2px;font-size:.72rem}.mini-cal-grid .dow{color:var(--fu-muted);font-weight:700}.mini-cal-grid span{padding:3px 0;border-radius:50%}.mini-cal-grid .today{background:var(--fu-blue);color:#fff;font-weight:700}.weather{border-top:1px solid var(--fu-border);padding-top:.4rem}.weather-row{display:flex;align-items:center;gap:.5rem;padding:.2rem 0}.weather-day{flex:1}.weather-temp{color:var(--fu-muted)}.sun{display:inline-block;width:12px;height:12px;border-radius:50%;background:#f5b400;box-shadow:0 0 0 3px #f5b40040;vertical-align:middle}.demo-box{margin-top:.5rem;padding:.6rem;border:1px dashed #b9c3cf;border-radius:6px;background:#f8fafc;display:flex;flex-direction:column;gap:.4rem}.demo-box h2{margin:0;font-size:.75rem;text-transform:uppercase;letter-spacing:.04em;color:var(--fu-muted)}.compare-list{margin:0;padding-left:1rem;font-size:.75rem}.speed{display:flex;flex-direction:column;gap:.2rem;font-size:.75rem;color:var(--fu-muted)}.speed select{padding:.3rem}.main{display:flex;flex-direction:column;min-width:0;min-height:0;background:#fff}.sheet-toolbar{display:flex;align-items:center;gap:.75rem;padding:.55rem .9rem;border-bottom:1px solid var(--fu-border);font-size:.85rem;flex-shrink:0}.course-select{display:flex;align-items:center;gap:.4rem;border:1px solid var(--fu-border);border-radius:4px;padding:.15rem .4rem}.course-select select{border:none;font:inherit;font-weight:500;background:transparent}.course-select .dot{width:9px;height:9px;border-radius:50%;background:var(--row-open)}.today-btn{border:1px solid var(--fu-border);background:#fff;border-radius:4px;padding:.3rem .7rem}.date-nav{font-weight:700}.weather-inline{color:var(--fu-muted);font-size:.78rem}.spacer{flex:1}.agent-status{display:inline-flex;align-items:center;gap:.45rem;padding:.3rem .75rem;border-radius:999px;background:#fdecef;color:#a3253a;font-weight:500;font-size:.8rem}.spinner{width:12px;height:12px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.sheet-scroll{flex:1;min-height:0;overflow:auto}.ts{min-width:640px}.ts-headrow{position:sticky;top:0;z-index:5;display:grid;grid-template-columns:1fr 1fr;background:#2b2f33;color:#fff}.ts-colhead{padding:.45rem;text-align:center;font-weight:700;font-size:.85rem}.ts-cols{display:grid;grid-template-columns:1fr 1fr;gap:2px;background:#fff}.ts-col{position:relative}.ts-row{position:relative;height:var(--row-h);border-bottom:1px solid rgba(255,255,255,.35);color:#fff;font-size:.78rem}.ts-row.is-open{background:var(--row-open)}.ts-row.is-back{background:var(--row-back)}.ts-row.is-closed{background:var(--row-closed);color:#4b5158;border-bottom-color:#e3e5e7}.ts-time{position:absolute;left:8px;top:50%;transform:translateY(-50%);font-weight:500}.ts-side{position:absolute;left:50%;top:2px;transform:translate(-50%);font-size:.62rem;font-weight:700;opacity:.85}.ts-cards{position:absolute;left:64px;right:4px;top:3px;bottom:3px;display:flex;gap:3px;z-index:2}.bk{display:flex;align-items:center;min-width:0;background:linear-gradient(#fdfdfd,#e9ebee);color:var(--fu-text);border:1px solid #b7bec6;border-radius:3px;box-shadow:0 1px 2px #00000040;overflow:hidden;font-size:.76rem;transition:transform .18s ease,box-shadow .18s ease,opacity .18s ease}.bk-holes{align-self:stretch;display:grid;place-items:center;padding:0 .35rem;background:#dde1e6;border-right:1px solid #b7bec6;font-weight:700;font-size:.7rem}.bk-text{padding:0 .4rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1}.bk-count{font-weight:700;margin-right:.2rem}.bk--lifting{transform:translateY(-3px) scale(1.03);box-shadow:0 4px 10px #00000059;outline:2px solid #ffd54f}.bk--placed{animation:placed-glow 1.2s ease-out}@keyframes placed-glow{0%{box-shadow:0 0 0 3px #ffd54fe6}to{box-shadow:0 1px 2px #00000040}}.card-enter-active,.card-leave-active{transition:opacity .22s ease,transform .22s ease}.card-enter-from{opacity:0;transform:translateY(-10px) scale(.95)}.card-leave-to{opacity:0;transform:translateY(-12px) scale(.9)}.frost-block{position:absolute;left:60px;right:2px;z-index:1;background:repeating-linear-gradient(135deg,#ffffff14 0,#ffffff14 8px,#fff0 8px,#fff0 16px),var(--frost-soft);border:2px solid var(--frost);border-radius:4px;transform-origin:top;pointer-events:none;display:flex;justify-content:center;padding-top:4px}.block-label{position:absolute;right:8px;z-index:3;margin-top:-1px;padding:.1rem .5rem;border-radius:0 0 4px 4px;background:var(--frost);color:#fff;font-weight:700;font-size:.7rem;pointer-events:none;box-shadow:0 1px 3px #0000004d}.block-label--move{background:#c98100}.block-label--removing{animation:block-fade .6s ease-in forwards}.frost-block--move{background:repeating-linear-gradient(135deg,#ffffff1a 0,#ffffff1a 8px,#fff0 8px,#fff0 16px),#e8a020c7;border-color:#c98100}.ts-row.is-removing{background:#5c1a24;transition:background .2s}.ts-row.is-removing .ts-time{text-decoration:line-through;opacity:.7}.ts-row.is-added{animation:row-added .9s ease-out}@keyframes row-added{0%{background:#9ccc65}}.ts-row.is-offgrid .ts-time{font-weight:700}.frost-block--creating{animation:block-grow .9s ease-out}.frost-block--removing{animation:block-fade .6s ease-in forwards}@keyframes block-grow{0%{transform:scaleY(0);opacity:.3}to{transform:scaleY(1);opacity:1}}@keyframes block-fade{to{opacity:0;transform:scaleY(.98)}}.chat-pane{display:flex;flex-direction:column;min-height:0;background:#fff;border-left:1px solid var(--fu-border)}.chat-header{display:flex;align-items:center;justify-content:space-between;padding:.65rem .9rem;border-bottom:1px solid var(--fu-border);flex-shrink:0}.chat-title{font-weight:700}.chat-header-actions{display:flex;gap:.5rem;align-items:center}.link-btn{background:none;border:none;color:var(--fu-blue);font-size:.78rem}.icon-btn{background:none;border:none;font-size:1.1rem;color:var(--fu-muted)}.mcp-banner{padding:.4rem .9rem;background:#eef5fd;color:var(--fu-blue-dark);font-size:.75rem;flex-shrink:0}.chat-log{flex:1;min-height:0;overflow-y:auto;padding:.9rem;display:flex;flex-direction:column;gap:.7rem}.msg{display:flex;flex-direction:column;gap:.45rem;max-width:92%}.msg.agent{align-self:flex-start}.msg.user{align-self:flex-end}.bubble{padding:.6rem .8rem;border-radius:10px;font-size:.86rem;line-height:1.45}.msg.agent .bubble{background:#f1f3f5}.msg.user .bubble{background:var(--fu-blue);color:#fff}.bubble.typing{display:inline-flex;gap:4px;padding:.75rem .9rem;width:fit-content}.bubble.typing span{width:6px;height:6px;border-radius:50%;background:#8b95a1;animation:typing 1s infinite ease-in-out}.bubble.typing span:nth-child(2){animation-delay:.15s}.bubble.typing span:nth-child(3){animation-delay:.3s}@keyframes typing{0%,80%,to{opacity:.3;transform:translateY(0)}40%{opacity:1;transform:translateY(-3px)}}.chips{display:flex;flex-wrap:wrap;gap:.4rem}.chip{border:1px solid var(--fu-blue);background:#fff;color:var(--fu-blue);border-radius:999px;padding:.35rem .8rem;font-size:.8rem}.chip:hover:not(:disabled){background:var(--chip-blue)}.chip:disabled{opacity:.45;cursor:default}.chip.chosen{background:var(--fu-blue);color:#fff;opacity:1}.opt-stack{display:grid;grid-template-columns:1fr 1fr;gap:.45rem}.opt-btn{display:flex;flex-direction:column;align-items:flex-start;gap:.15rem;text-align:left;padding:.6rem .7rem;border:1.5px solid var(--fu-blue);border-radius:8px;background:#fff;color:var(--fu-text);transition:background .15s,transform .1s}.opt-btn:hover:not(:disabled){background:var(--chip-blue);transform:translateY(-1px)}.opt-btn:disabled{opacity:.45;cursor:default}.opt-btn.chosen{background:var(--fu-blue);color:#fff;opacity:1}.opt-title{font-weight:700;font-size:.9rem;color:var(--fu-blue-dark)}.opt-btn.chosen .opt-title,.opt-btn.chosen .opt-sub,.opt-btn.chosen .opt-hint{color:#fff}.opt-sub{font-size:.75rem;font-weight:500;color:var(--row-open)}.opt-hint{font-size:.7rem;color:var(--fu-muted)}.preview-table-wrap{max-height:220px;overflow:auto;border:1px solid var(--fu-border);border-radius:6px}.preview-table{width:100%;border-collapse:collapse;font-size:.75rem}.preview-table th{position:sticky;top:0;background:#f1f3f5;text-align:left;padding:.3rem .45rem}.preview-table td{padding:.25rem .45rem;border-top:1px solid #eef0f2}.preview-table .delta{color:#a3253a;font-weight:700}.chat-input{display:flex;gap:.4rem;padding:.6rem .9rem;border-top:1px solid var(--fu-border);flex-shrink:0}.chat-input input{flex:1;padding:.5rem .7rem;border:1px solid var(--fu-border);border-radius:999px}.send-btn{width:34px;border:none;border-radius:50%;background:var(--fu-blue);color:#fff;opacity:.5}.fade-enter-active,.fade-leave-active{transition:opacity .2s}.fade-enter-from,.fade-leave-to{opacity:0}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}
