:root{--bg:#f6f7f9;--surface:#ffffff;--ink:#1a1d24;--muted:#5b6472;--hairline:#e3e6ec;--accent:#4b53c4;--accent-ink:#ffffff;--accent-soft:#eef0fb;--good:#1f7a54;--good-soft:#e6f3ec;--warn:#9a5b18;--warn-soft:#f6ecdf;--radius:10px;--font:system-ui,-apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif}@media (prefers-color-scheme:dark){:root{--bg:#14171d;--surface:#1b1f27;--ink:#e7e9ee;--muted:#9aa3b2;--hairline:#2a2f3a;--accent:#949bef;--accent-ink:#14171d;--accent-soft:#22273a;--good:#74c6a0;--good-soft:#16281f;--warn:#d6a668;--warn-soft:#2c2416}}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--font);line-height:1.55;-webkit-font-smoothing:antialiased}.app-header{border-bottom:1px solid var(--hairline);background:var(--surface)}.app-header .bar{max-width:760px;margin:0 auto;padding:.9rem 1.25rem;display:flex;align-items:baseline;gap:.6rem}.app-header .brand{font-weight:650;letter-spacing:-.01em}.app-header .tag{color:var(--muted);font-size:.85rem}main.page{max-width:760px;margin:0 auto;padding:1.75rem 1.25rem 4rem}main.page.wide{max-width:1000px}h1{font-size:1.45rem;letter-spacing:-.01em;margin:0 0 .35rem}.lede{color:var(--muted);margin:0 0 1.5rem}.field label{display:block;font-size:.85rem;font-weight:600;margin-bottom:.4rem}.field input[type=time],.field select{font:inherit;color:var(--ink);background:var(--surface);border:1px solid var(--hairline);border-radius:var(--radius);padding:.5rem .7rem}.field input[type=time]:focus-visible,.field select:focus-visible{outline:2px solid var(--accent);outline-offset:1px;border-color:var(--accent)}.field.row{display:flex;gap:1rem;flex-wrap:wrap}.field+.field{margin-top:.9rem}textarea{width:100%;min-height:96px;resize:vertical;padding:.7rem .8rem;font:inherit;color:var(--ink);background:var(--surface);border:1px solid var(--hairline);border-radius:var(--radius)}textarea:focus-visible{outline:2px solid var(--accent);outline-offset:1px;border-color:var(--accent)}.actions{display:flex;gap:.6rem;margin-top:.9rem;flex-wrap:wrap}button{font:inherit;font-weight:600;padding:.55rem 1rem;border-radius:var(--radius);border:1px solid var(--accent);background:var(--accent);color:var(--accent-ink);cursor:pointer}button.secondary{background:var(--surface);color:var(--ink);border-color:var(--hairline)}button:disabled{opacity:.5;cursor:not-allowed}button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.section-label{font-size:.75rem;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:1.75rem 0 .6rem}.constraint-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.5rem}.constraint{display:flex;align-items:flex-start;gap:.65rem;padding:.7rem .85rem;background:var(--surface);border:1px solid var(--hairline);border-radius:var(--radius)}.constraint input[type=checkbox]{margin-top:.2rem;width:1rem;height:1rem;accent-color:var(--accent)}.constraint.discarded{opacity:.55}.constraint .type{font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:.82rem;color:var(--accent)}.constraint .from{color:var(--muted);font-size:.85rem;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.constraint .badge{margin-left:auto;font-size:.7rem;padding:.1rem .45rem;border-radius:20px;white-space:nowrap}.constraint .badge.hard{background:var(--accent-soft);color:var(--accent)}.constraint .badge.soft{background:var(--good-soft);color:var(--good)}.rejected{border:1px solid var(--warn);background:var(--warn-soft);border-radius:var(--radius);padding:.6rem .85rem;font-size:.88rem}.rejected .r-summary{font-weight:600}.rejected ul{margin:.3rem 0 0;padding-left:1.1rem;color:var(--muted)}.result{margin-top:1.5rem;border:1px solid var(--good);background:var(--good-soft);color:var(--ink);border-radius:var(--radius);padding:.85rem 1rem}.hint{color:var(--muted);font-size:.85rem;margin-top:.4rem}.studio{max-width:1180px;margin:0 auto;padding:1.25rem 1.25rem 2rem}.studio-head{display:flex;align-items:baseline;justify-content:space-between;gap:1rem;margin-bottom:.75rem}.studio-head h1{font-size:1.4rem;margin:0}.studio-error{margin-bottom:.75rem}.studio-grid{display:grid;grid-template-columns:minmax(0,1fr) 340px;grid-gap:1rem;gap:1rem;align-items:start}.studio-cal{min-width:0}.cal-hint{margin:.5rem 0 0}.studio-chat{display:flex;flex-direction:column;border:1px solid var(--hairline);border-radius:var(--radius);background:var(--surface);overflow:hidden;position:-webkit-sticky;position:sticky;top:1rem;height:calc(64vh + 3.5rem)}.studio-chat .chat-head{border-bottom:1px solid var(--hairline)}.studio-chat .chat-thread{flex:1 1 auto;max-height:none}.studio-chat .suggestions{margin:0;padding:0 .75rem .5rem}.studio-chat .command{margin:0;padding:.6rem .75rem;border-top:1px solid var(--hairline)}.chat-empty{margin:0}@media (max-width:820px){.studio-grid{grid-template-columns:1fr}.studio-chat{position:static;height:auto;max-height:30rem}}.toast{position:fixed;bottom:1.25rem;left:50%;transform:translateX(-50%);display:flex;align-items:center;gap:.9rem;background:var(--ink);color:var(--surface);padding:.55rem .9rem;border-radius:10px;box-shadow:0 8px 24px rgba(0,0,0,.3);z-index:50;font-size:.9rem}.toast button{font:inherit;font-weight:700;background:none;border:none;color:color-mix(in srgb,var(--accent) 55%,white);cursor:pointer;padding:0}.toast .toast-x{color:var(--surface);opacity:.7;font-weight:400}.command{display:flex;gap:.5rem;margin:.5rem 0 .4rem}.command-input{flex:1 1;min-width:0;font:inherit;color:var(--ink);background:var(--surface);border:1px solid var(--hairline);border-radius:var(--radius);padding:.6rem .8rem}.command-input:focus-visible{outline:2px solid var(--accent);outline-offset:1px;border-color:var(--accent)}.assistant{margin-bottom:.6rem;padding:.7rem .9rem;background:var(--surface);border:1px solid var(--hairline);border-left:3px solid var(--accent);border-radius:var(--radius);font-size:.92rem}.page-head{display:flex;align-items:baseline;justify-content:space-between;gap:1rem;flex-wrap:wrap}.head-link{font-size:.9rem;font-weight:600;color:var(--accent);text-decoration:none;white-space:nowrap}.head-link:hover{text-decoration:underline}.mg-section{margin:1.25rem 0}.mg-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.4rem}.mg-row{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.6rem .85rem;border:1px solid var(--hairline);border-radius:var(--radius);background:var(--surface)}.mg-name{font-weight:600;display:flex;flex-direction:column;gap:.15rem;min-width:0}.mg-sub{font-weight:400;font-size:.8rem}.mg-sub,.mg-tag{color:var(--muted)}.mg-tag{margin-left:.5rem;font-size:.68rem;font-weight:600;background:color-mix(in srgb,var(--muted) 14%,var(--surface));padding:.05rem .4rem;border-radius:999px;text-transform:uppercase;letter-spacing:.03em}.mg-actions,.mg-edit{display:flex;gap:.4rem;flex:none;align-items:center}.mg-edit.wrap{flex-wrap:wrap;flex:1 1 100%}.mg-edit.wrap .mg-input{flex:1 1 8rem;min-width:6rem}.mg-edit.wrap .mg-name{flex:0 0 auto;align-self:center;font-weight:600}.mg-actions button,.mg-edit button{font:inherit;font-size:.82rem;font-weight:600;padding:.3rem .7rem;border-radius:8px;border:1px solid var(--hairline);background:var(--surface);color:var(--ink);cursor:pointer}.mg-actions button.danger{color:var(--warn,#b4262a);border-color:color-mix(in srgb,var(--warn,#b4262a) 40%,transparent)}.mg-actions button.danger:disabled{opacity:.4;cursor:default}.mg-input{font:inherit;padding:.3rem .5rem;border:1px solid var(--hairline);border-radius:8px;background:var(--bg);color:var(--ink)}.mg-add{display:flex;gap:.4rem;margin-bottom:.5rem}.mg-add .mg-input{flex:1 1;max-width:22rem}.mg-add button{font:inherit;font-size:.82rem;font-weight:600;padding:.3rem .8rem;border-radius:8px;border:1px solid color-mix(in srgb,var(--accent) 40%,transparent);background:var(--accent-soft);color:var(--accent);cursor:pointer}.mg-add button:disabled{opacity:.5;cursor:default}.mg-audit{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.25rem}.mg-audit-row{display:flex;gap:.75rem;padding:.4rem .6rem;border-left:2px solid var(--hairline);font-size:.85rem}.mg-audit-when{color:var(--muted);font-feature-settings:"tnum";font-variant-numeric:tabular-nums;white-space:nowrap;flex:none}.mg-audit-what{color:var(--ink)}.mg-back{margin-top:1.5rem}.mg-back a{color:var(--accent);text-decoration:none;font-weight:600}.ev-card{display:flex;flex-direction:column;gap:.25rem;padding:.7rem .9rem;margin-bottom:.8rem;border:1px solid var(--hairline);border-left:3px solid var(--accent);border-radius:var(--radius);background:color-mix(in srgb,var(--accent) 8%,var(--surface))}.ev-card .ev-meta{color:var(--muted);font-size:.9rem;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.ev-card .ev-who{font-size:.85rem}.chat{margin-bottom:.9rem;border:1px solid var(--hairline);border-radius:var(--radius);background:var(--surface);overflow:hidden}.chat-head{display:flex;align-items:center;justify-content:space-between;padding:.5rem .75rem;border-bottom:1px solid var(--hairline)}.review-wrap{margin-bottom:1rem;border:1px solid color-mix(in srgb,var(--accent) 35%,var(--hairline));border-radius:var(--radius);background:var(--surface);overflow:hidden}.review-head{display:flex;align-items:center;justify-content:space-between;padding:.5rem .75rem;border-bottom:1px solid var(--hairline);background:var(--accent-soft)}.review-head .section-label{margin:0;color:var(--accent)}.review-panel{padding:.5rem 1rem 1rem}.review-panel h1{font-size:1.15rem;margin:.6rem 0 .2rem}.review-panel .lede{margin:0 0 .6rem}.lesson-detail{padding:.75rem 1rem 1rem;display:flex;flex-direction:column;gap:.6rem;align-items:flex-start}.lesson-detail dl{margin:0;display:grid;grid-gap:.4rem;gap:.4rem;width:100%}.lesson-detail dl>div{display:flex;gap:.6rem}.lesson-detail dt{flex:0 0 4.5rem;color:var(--muted);font-size:.85rem}.lesson-detail dd{margin:0;font-weight:500}.cal-lesson.clickable,.pin-btn{cursor:pointer}.pin-btn{position:absolute;top:2px;right:2px;border:none;background:transparent;font-size:.72rem;line-height:1;padding:2px;border-radius:6px;opacity:.35;filter:grayscale(1)}.pin-btn:hover:not(:disabled){opacity:.9;filter:none;background:color-mix(in srgb,var(--accent) 12%,transparent)}.pin-btn.on{opacity:1;filter:none}.pin-btn:disabled{cursor:default;opacity:.8;filter:none}.chat-head .section-label{margin:0}.chat-new{font:inherit;font-size:.8rem;font-weight:600;color:var(--accent);background:none;border:none;cursor:pointer;padding:0}.chat-new:hover{text-decoration:underline}.chat-thread{display:flex;flex-direction:column;gap:.5rem;padding:.75rem;max-height:22rem;overflow-y:auto}.chat-msg{max-width:80%;padding:.5rem .75rem;border-radius:12px;font-size:.92rem;line-height:1.4;white-space:pre-wrap}.chat-msg.user{align-self:flex-end;background:var(--accent);color:#fff;border-bottom-right-radius:4px}.chat-msg.assistant{align-self:flex-start;background:var(--accent-soft);color:var(--ink);border-bottom-left-radius:4px}.chat-msg.thinking{color:var(--muted);font-style:italic}.suggestions{display:flex;flex-wrap:wrap;gap:.5rem;margin:-.2rem 0 .8rem}.suggestion{font:inherit;font-weight:600;font-size:.85rem;padding:.4rem .8rem;border-radius:999px;cursor:pointer;background:var(--accent-soft);color:var(--accent);border:1px solid color-mix(in srgb,var(--accent) 35%,transparent)}.suggestion:hover:not(:disabled){background:color-mix(in srgb,var(--accent) 22%,var(--surface))}.suggestion:disabled{opacity:.5;cursor:default}.agenda{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.35rem}.agenda li{display:flex;align-items:baseline;gap:.75rem;padding:.5rem .75rem;background:var(--surface);border:1px solid var(--hairline);border-radius:var(--radius)}.agenda .a-time{font-feature-settings:"tnum";font-variant-numeric:tabular-nums;color:var(--muted);font-size:.85rem;white-space:nowrap}.agenda .a-who{font-weight:600}.agenda .a-where{margin-left:auto;color:var(--accent);font-size:.85rem}.empty{border:1px dashed var(--hairline);border-radius:var(--radius);padding:1rem 1.1rem;margin-top:.5rem}.result .review-link{display:inline-block;margin-top:.6rem;font-weight:600;color:var(--accent);text-decoration:none}.result .review-link:hover{text-decoration:underline}.proposal-head{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap}.status{font-size:.72rem;text-transform:uppercase;letter-spacing:.05em;font-weight:700;padding:.15rem .55rem;border-radius:20px}.status.draft,.status.under_review{background:var(--accent-soft);color:var(--accent)}.status.approved{background:var(--good-soft);color:var(--good)}.status.discarded{background:var(--warn-soft);color:var(--warn)}.summary{display:flex;flex-direction:column;gap:.15rem;border:1px solid var(--hairline);border-left:3px solid var(--good);background:var(--surface);border-radius:var(--radius);padding:.75rem .9rem;margin-top:.5rem}.summary.warn{border-left-color:var(--warn)}.summary span{color:var(--muted);font-size:.9rem}.table-wrap{overflow-x:auto}table.schedule{width:100%;border-collapse:collapse;font-size:.92rem}table.schedule th{text-align:left;font-size:.72rem;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-weight:600;padding:.4rem .6rem}table.schedule td,table.schedule th{border-bottom:1px solid var(--hairline)}table.schedule td{padding:.55rem .6rem}table.schedule td.num{font-feature-settings:"tnum";font-variant-numeric:tabular-nums;white-space:nowrap}table.schedule tbody tr:last-child td{border-bottom:none}.cal{display:flex;gap:.4rem;overflow:auto;max-height:64vh;align-items:flex-start;border:1px solid var(--hairline);border-radius:var(--radius);background:var(--surface);padding:0 .5rem .5rem}.cal-gutter{position:relative;flex:none;width:3rem;margin-top:1.5rem}.cal-hour{position:absolute;right:.4rem;transform:translateY(-.55em);font-size:.7rem;color:var(--muted);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.cal-cols{display:flex;gap:.4rem;flex:1 1;min-width:0}.cal-col{flex:1 1;min-width:5.5rem}.cal-col-head{position:-webkit-sticky;position:sticky;top:0;z-index:3;height:1.5rem;padding-top:.35rem;font-size:.72rem;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.04em;background:var(--surface)}.cal-track{position:relative;border-left:1px solid var(--hairline);background-repeat:repeat-y}.cal-avail{position:absolute;left:0;right:0;z-index:0;border-radius:4px;background:color-mix(in srgb,var(--muted) 15%,var(--surface))}.cal-lesson{position:absolute;left:2px;right:2px;overflow:hidden;display:flex;flex-direction:column;gap:.05rem;padding:.2rem .35rem;border-radius:6px;background:var(--accent-soft);border-left:3px solid var(--accent);font-size:.75rem;line-height:1.2}.cal-lesson .who{font-weight:650;color:var(--ink)}.cal-lesson .meta{display:flex;gap:.35rem;align-items:baseline;flex-wrap:wrap}.cal-lesson .t{color:var(--muted);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.cal-lesson .where{color:var(--accent);font-size:.7rem}.cal-lesson.changed{background:var(--warn-soft);border-left-color:var(--warn)}.cal-lesson.changed .where{color:var(--warn)}button.cal-lesson{font:inherit;text-align:left;cursor:pointer;-moz-appearance:none;appearance:none;-webkit-appearance:none;border:none;border-left:3px solid var(--accent)}.cal-lesson.clickable:hover{box-shadow:0 0 0 1px var(--accent) inset}.cal-lesson.dragging{z-index:20;opacity:.85;box-shadow:0 8px 20px rgba(0,0,0,.28);cursor:-webkit-grabbing;cursor:grabbing}.cal-lesson.clickable{cursor:-webkit-grab;cursor:grab;touch-action:none}.cal-drop-preview{position:absolute;left:2px;right:2px;z-index:4;border-radius:6px;border:2px dashed var(--accent);background:color-mix(in srgb,var(--accent) 18%,transparent);pointer-events:none}.cal-lesson.pinned{border-left-color:var(--muted);background:color-mix(in srgb,var(--surface) 86%,var(--hairline))}.cal-lesson.past{opacity:.5;border-left-color:var(--hairline);background:color-mix(in srgb,var(--surface) 92%,var(--hairline))}.cal-lesson.past .who{color:var(--muted)}.cal-chip.past{opacity:.5}.cal-event{position:absolute;left:2px;right:2px;overflow:hidden;border-radius:6px;padding:.2rem .4rem;font-size:.72rem;line-height:1.15;background:color-mix(in srgb,var(--accent) 16%,var(--surface));border-left:3px solid var(--accent)}.cal-event .who{font-weight:650;color:var(--ink);display:block}.cal-event .meta{display:flex;gap:.35rem;align-items:baseline;flex-wrap:wrap}.cal-event .t{color:var(--muted);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.cal-event .where{color:var(--accent)}.cal-event .ev-who{color:var(--muted)}.cal-event.past{opacity:.5}.cal-event.notice{background:color-mix(in srgb,var(--accent) 8%,var(--surface));border-left-style:dashed}.cal-chip.event{background:color-mix(in srgb,var(--accent) 18%,var(--surface));color:var(--ink);font-weight:600}.cal-block{position:absolute;left:0;right:0;z-index:0;overflow:hidden;border-radius:4px;padding:.1rem .35rem;font-size:.68rem;color:var(--muted);background:repeating-linear-gradient(45deg,color-mix(in srgb,var(--muted) 30%,transparent) 0 5px,transparent 5px 11px),color-mix(in srgb,var(--surface) 90%,var(--muted));border:1px solid color-mix(in srgb,var(--muted) 35%,transparent)}.cal-block .blk-label{font-weight:600;letter-spacing:.02em}.cal-block.past{opacity:.5}.cal-event,.cal-lesson{z-index:1}.cal-chip.block{background:color-mix(in srgb,var(--muted) 14%,var(--surface));color:var(--muted)}.cal-lesson .lock{font-size:.7rem}.cal-toolbar{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap;margin-bottom:.6rem}.cal-nav{display:flex;gap:.3rem}.cal-title{font-weight:650;letter-spacing:-.01em;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.cal-views{margin-left:auto}.cal-slots,.cal-views{display:flex;gap:0;border:1px solid var(--hairline);border-radius:var(--radius);overflow:hidden}.cal-nav button,.cal-slots button,.cal-views button{font:inherit;font-weight:600;font-size:.85rem;padding:.35rem .7rem;border:1px solid var(--hairline);background:var(--surface);color:var(--ink);cursor:pointer;border-radius:var(--radius)}.cal-nav button{min-width:2.2rem}.cal-slots button,.cal-views button{border:none;border-radius:0;background:transparent}.cal-slots button.active,.cal-views button.active{background:var(--accent);color:var(--accent-ink)}.cal-slots button{min-width:2.4rem;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.cal-col-head.today{color:var(--accent);font-weight:700}.cal-month{border:1px solid var(--hairline);border-radius:var(--radius);background:var(--surface);overflow:hidden}.cal-month-head{display:grid;grid-template-columns:repeat(7,1fr);border-bottom:1px solid var(--hairline)}.cal-dow{padding:.4rem .5rem;font-size:.7rem;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-weight:600}.cal-month-grid{display:grid;grid-template-columns:repeat(7,1fr)}.cal-cell{min-height:5.5rem;display:flex;flex-direction:column;gap:.25rem;align-items:stretch;text-align:left;padding:.35rem;border-right:1px solid var(--hairline);border-bottom:1px solid var(--hairline);background:var(--surface);font:inherit;color:var(--ink);cursor:pointer}.cal-cell:nth-child(7n){border-right:none}.cal-cell:hover{background:var(--accent-soft)}.cal-cell.muted{background:color-mix(in srgb,var(--surface) 60%,var(--bg))}.cal-cell.muted .cal-cell-num{color:var(--muted)}.cal-cell.today .cal-cell-num{background:var(--accent);color:var(--accent-ink);border-radius:50%}.cal-cell-num{font-size:.78rem;font-weight:600;color:var(--ink);font-feature-settings:"tnum";font-variant-numeric:tabular-nums;width:1.5rem;height:1.5rem;display:inline-flex;align-items:center;justify-content:center}.cal-chips{display:flex;flex-direction:column;gap:.15rem}.cal-chip{font-size:.7rem;padding:.05rem .3rem;border-radius:4px;background:var(--accent-soft);color:var(--accent);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cal-chip.pinned{background:color-mix(in srgb,var(--surface) 80%,var(--hairline));color:var(--muted)}.cal-more{font-size:.68rem;color:var(--muted)}