/* Kavvi Study Plan Control Center — production overlay, 2026-09-24 */
.kv-plan-source-hidden { display: none !important; }
#kv-plan-manager { width: 100%; min-width: 0; color: var(--kv-text, #1d2423); }
#kv-plan-manager *, .kpm-modal-wrap * { box-sizing: border-box; }
#kv-plan-manager button, #kv-plan-manager input, #kv-plan-manager select,
.kpm-modal-wrap button, .kpm-modal-wrap input, .kpm-modal-wrap select { font: inherit; }
#kv-plan-manager button, .kpm-modal-wrap button { cursor: pointer; }
#kv-plan-manager svg, .kpm-modal-wrap svg { width: 18px; height: 18px; flex: 0 0 auto; }

.kv-plan-manage-entry { background: color-mix(in srgb, var(--kv-accent, #6c52ed) 10%, transparent) !important; border-color: color-mix(in srgb, var(--kv-accent, #6c52ed) 24%, transparent) !important; color: var(--kv-accent, #6248df) !important; }
.kv-plan-manage-entry > span:first-child { font-size: 16px; line-height: 1; }

.kpm-shell { --kpm-purple:#6f55eb; --kpm-purple-2:#8c79f2; --kpm-ink:var(--kv-text,#18201f); --kpm-muted:var(--kv-text-muted,#707876); --kpm-line:var(--kv-line-2,#e4e5e1); --kpm-card:var(--kv-card,#fff); --kpm-bg:var(--kv-bg,#f6f5f1); width:100%; max-width:1440px; margin:0 auto; padding:32px clamp(20px,4vw,64px) 64px; }
.kpm-hero { position:relative; overflow:hidden; border:1px solid var(--kpm-line); border-radius:28px; padding:22px 26px 0; background:linear-gradient(125deg,color-mix(in srgb,var(--kpm-purple) 7%,var(--kpm-card)) 0%,var(--kpm-card) 46%,color-mix(in srgb,#39a786 5%,var(--kpm-card)) 100%); box-shadow:0 18px 55px rgba(41,35,66,.08); }
.kpm-hero:after { content:""; position:absolute; width:360px; height:360px; border-radius:50%; inset:-220px -100px auto auto; background:radial-gradient(circle,color-mix(in srgb,var(--kpm-purple) 18%,transparent),transparent 68%); pointer-events:none; }
.kpm-hero__top,.kpm-hero__body,.kpm-section-head,.kpm-subject__top,.kpm-modal__head,.kpm-modal__foot { display:flex; align-items:center; justify-content:space-between; gap:18px; }
.kpm-hero__top { position:relative; z-index:1; padding-bottom:26px; }
.kpm-back,.kpm-switch button { border:0; background:transparent; color:var(--kpm-muted); }
.kpm-back { display:inline-flex; align-items:center; gap:7px; padding:7px 2px; font-size:13px; font-weight:720; }
[dir=rtl] .kpm-back svg { transform:scaleX(-1); }
.kpm-switch { display:flex; padding:4px; border:1px solid var(--kpm-line); background:color-mix(in srgb,var(--kpm-card) 88%,transparent); border-radius:13px; }
.kpm-switch button { min-width:105px; padding:8px 14px; border-radius:9px; font-size:12px; font-weight:760; }
.kpm-switch button.is-active { color:var(--kpm-ink); background:var(--kpm-card); box-shadow:0 2px 8px rgba(22,25,24,.08); }
.kpm-hero__body { position:relative; z-index:1; align-items:flex-end; padding:4px 0 26px; }
.kpm-kicker,.kpm-section-head > div > span,.kpm-modal__head > div > span { display:flex; align-items:center; gap:7px; color:var(--kpm-purple); font-size:10px; line-height:1; letter-spacing:.13em; font-weight:820; text-transform:uppercase; }
.kpm-kicker svg { width:14px !important; height:14px !important; }
.kpm-hero h1 { margin:12px 0 9px; font-family:inherit; font-size:clamp(30px,3vw,42px); font-weight:720; line-height:1.05; letter-spacing:-.035em; }
.kpm-hero__body p { margin:0; max-width:680px; color:var(--kpm-muted); line-height:1.7; font-size:14px; }
.kpm-primary,.kpm-secondary,.kpm-quiet,.kpm-danger,.kpm-add-row { display:inline-flex; align-items:center; justify-content:center; gap:8px; min-height:42px; border-radius:12px; padding:10px 16px; font-weight:760; font-size:12px; transition:.18s ease; }
.kpm-primary { border:1px solid var(--kpm-purple); color:#fff; background:linear-gradient(135deg,var(--kpm-purple),#5e43d7); box-shadow:0 8px 22px color-mix(in srgb,var(--kpm-purple) 24%,transparent); }
.kpm-primary:hover { transform:translateY(-1px); box-shadow:0 11px 28px color-mix(in srgb,var(--kpm-purple) 30%,transparent); }
.kpm-primary:disabled { opacity:.55; cursor:wait; transform:none; }
.kpm-secondary,.kpm-quiet,.kpm-add-row { border:1px solid var(--kpm-line); color:var(--kpm-ink); background:var(--kpm-card); }
.kpm-secondary:hover,.kpm-quiet:hover,.kpm-add-row:hover { border-color:color-mix(in srgb,var(--kpm-purple) 35%,var(--kpm-line)); color:var(--kpm-purple); }
.kpm-danger { border:1px solid color-mix(in srgb,#d04a4a 25%,var(--kpm-line)); color:#bd3838; background:color-mix(in srgb,#d04a4a 5%,var(--kpm-card)); }
.kpm-danger.is-solid { color:#fff; background:#c54141; border-color:#c54141; }
.kpm-health { position:relative; z-index:1; margin:0 -26px; padding:16px 26px; border-top:1px solid var(--kpm-line); display:grid; grid-template-columns:auto 1fr auto; align-items:center; gap:13px; background:color-mix(in srgb,#42a67e 6%,var(--kpm-card)); }
.kpm-health.is-attention { background:color-mix(in srgb,#e5a533 7%,var(--kpm-card)); }
.kpm-health__mark { width:32px; height:32px; border-radius:10px; display:grid; place-items:center; color:#288765; background:color-mix(in srgb,#42a67e 15%,transparent); }
.kpm-health.is-attention .kpm-health__mark { color:#b87a10; background:color-mix(in srgb,#e5a533 17%,transparent); }
.kpm-health strong { display:block; font-size:13px; }
.kpm-health p { margin:3px 0 0; color:var(--kpm-muted); font-size:11px; line-height:1.45; }
.kpm-health > button { border:0; background:transparent; color:var(--kpm-purple); font-size:11px; font-weight:800; }

.kpm-metrics { display:grid; grid-template-columns:repeat(4,1fr); gap:12px; margin:16px 0; }
.kpm-metrics article { min-width:0; display:flex; align-items:center; gap:12px; padding:16px 18px; border:1px solid var(--kpm-line); border-radius:17px; background:var(--kpm-card); }
.kpm-metrics article > svg { padding:8px; width:38px !important; height:38px !important; color:var(--kpm-purple); border-radius:12px; background:color-mix(in srgb,var(--kpm-purple) 9%,transparent); }
.kpm-metrics strong,.kpm-metrics span { display:block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.kpm-metrics strong { color:var(--kpm-ink); font-size:16px; letter-spacing:-.02em; }
.kpm-metrics span { margin-top:2px; color:var(--kpm-muted); font-size:10px; }

.kpm-grid { display:grid; grid-template-columns:minmax(0,1.55fr) minmax(310px,.85fr); gap:16px; align-items:start; }
.kpm-card { border:1px solid var(--kpm-line); border-radius:22px; padding:22px; background:var(--kpm-card); }
.kpm-section-head { align-items:flex-start; margin-bottom:20px; }
.kpm-section-head h2 { margin:8px 0 4px; font-family:inherit; font-size:25px; line-height:1.05; font-weight:700; letter-spacing:-.03em; }
.kpm-section-head p { margin:0; color:var(--kpm-muted); font-size:11px; line-height:1.55; }
.kpm-quiet { min-height:36px; padding:8px 11px; }
.kpm-bars { display:grid; gap:8px; }
.kpm-day { display:grid; grid-template-columns:105px minmax(100px,1fr) 92px; align-items:center; gap:13px; padding:7px 0; }
.kpm-day__label { display:flex; align-items:baseline; justify-content:space-between; gap:8px; }
.kpm-day__label strong { font-size:11px; }
.kpm-day__label small,.kpm-day__numbers small { color:var(--kpm-muted); font-size:9px; }
.kpm-day__track { position:relative; height:8px; border-radius:999px; background:color-mix(in srgb,var(--kpm-ink) 5%,transparent); overflow:hidden; }
.kpm-day__track i,.kpm-day__track b { position:absolute; inset:0 auto 0 0; width:var(--w); border-radius:inherit; }
[dir=rtl] .kpm-day__track i,[dir=rtl] .kpm-day__track b { inset:0 0 0 auto; }
.kpm-day__track i { background:color-mix(in srgb,var(--kpm-purple) 17%,transparent); }
.kpm-day__track b { height:5px; top:1.5px; background:linear-gradient(90deg,var(--kpm-purple),var(--kpm-purple-2)); }
.kpm-day.is-over .kpm-day__track b { background:linear-gradient(90deg,#db6a54,#e6a042); }
.kpm-day.is-over .kpm-day__numbers strong { color:#cf5945; }
.kpm-day__numbers { display:flex; justify-content:flex-end; align-items:baseline; gap:3px; }
.kpm-day__numbers strong { font-size:11px; }
.kpm-legend { display:flex; align-items:center; gap:15px; margin-top:16px; padding-top:14px; border-top:1px solid var(--kpm-line); color:var(--kpm-muted); font-size:9px; }
.kpm-legend > span { display:flex; align-items:center; gap:5px; }
.kpm-legend i { display:inline-block; width:17px; height:5px; border-radius:99px; }
.kpm-legend i.is-plan { background:var(--kpm-purple); }
.kpm-legend i.is-capacity { height:8px; background:color-mix(in srgb,var(--kpm-purple) 18%,transparent); }
.kpm-legend__hint { margin-inline-start:auto; }

.kpm-insight-list { display:grid; gap:9px; }
.kpm-insight-list article { display:grid; grid-template-columns:auto 1fr; gap:10px; padding:13px; border:1px solid var(--kpm-line); border-radius:14px; background:color-mix(in srgb,var(--kpm-ink) 1.4%,var(--kpm-card)); }
.kpm-insight-list article > span { width:29px; height:29px; display:grid; place-items:center; border-radius:9px; color:var(--kpm-purple); background:color-mix(in srgb,var(--kpm-purple) 10%,transparent); }
.kpm-insight-list article.is-warn > span { color:#bb7b11; background:color-mix(in srgb,#e6a139 15%,transparent); }
.kpm-insight-list article.is-good > span { color:#23835f; background:color-mix(in srgb,#39a77d 14%,transparent); }
.kpm-insight-list strong { display:block; font-size:11px; line-height:1.35; }
.kpm-insight-list p { margin:4px 0 0; color:var(--kpm-muted); font-size:9.5px; line-height:1.5; }
.kpm-insight-list button { grid-column:2; justify-self:start; border:0; padding:0; color:var(--kpm-purple); background:transparent; font-size:9.5px; font-weight:800; }

.kpm-subjects { margin-top:30px; }
.kpm-subject-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:13px; }
.kpm-subject { --subject:#7b62ec; border:1px solid var(--kpm-line); border-radius:19px; padding:17px; background:var(--kpm-card); transition:.18s ease; }
.kpm-subject:nth-child(12n+2){--subject:#3d9bd8}.kpm-subject:nth-child(12n+3){--subject:#36a68b}.kpm-subject:nth-child(12n+4){--subject:#d79a34}.kpm-subject:nth-child(12n+5){--subject:#d86075}.kpm-subject:nth-child(12n+6){--subject:#72ad44}.kpm-subject:nth-child(12n+7){--subject:#aa68d7}.kpm-subject:nth-child(12n+8){--subject:#35aeba}.kpm-subject:nth-child(12n+9){--subject:#df7f48}.kpm-subject:nth-child(12n+10){--subject:#6377e3}.kpm-subject:nth-child(12n+11){--subject:#d05aa8}.kpm-subject:nth-child(12n+12){--subject:#45a568}
.kpm-subject:hover { transform:translateY(-2px); border-color:color-mix(in srgb,var(--subject) 38%,var(--kpm-line)); box-shadow:0 12px 32px rgba(27,30,29,.07); }
.kpm-subject__top { align-items:flex-start; }
.kpm-subject__color { width:9px; height:38px; flex:0 0 auto; border-radius:99px; background:var(--subject); }
.kpm-subject__top > div { min-width:0; flex:1; }
.kpm-subject h3 { margin:1px 0 5px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; font-size:13px; }
.kpm-subject__top p { margin:0; color:var(--kpm-muted); font-size:9.5px; }
.kpm-subject__top > button { width:30px; height:30px; display:grid; place-items:center; border:1px solid var(--kpm-line); border-radius:9px; color:var(--kpm-muted); background:transparent; }
.kpm-subject__stats { display:grid; grid-template-columns:repeat(3,1fr); gap:7px; margin:17px 0 14px; padding:13px 0; border-block:1px solid var(--kpm-line); }
.kpm-subject__stats span { min-width:0; }
.kpm-subject__stats strong,.kpm-subject__stats small { display:block; }
.kpm-subject__stats strong { font-size:13px; }
.kpm-subject__stats small { margin-top:3px; overflow:hidden; color:var(--kpm-muted); font-size:8.5px; text-overflow:ellipsis; white-space:nowrap; }
.kpm-subject__actions { display:flex; gap:7px; }
.kpm-subject__actions button,.kpm-subject__actions a { flex:1; min-width:0; display:flex; align-items:center; justify-content:center; gap:6px; min-height:34px; padding:7px; border:1px solid var(--kpm-line); border-radius:9px; color:var(--kpm-ink); background:transparent; text-decoration:none; font-size:9px; font-weight:750; }
.kpm-subject__actions svg { width:14px !important; height:14px !important; color:var(--subject); }

.kpm-history { margin-top:30px; }
.kpm-history-list { display:grid; }
.kpm-history-list article { display:grid; grid-template-columns:auto 1fr auto; align-items:center; gap:12px; padding:12px 2px; border-top:1px solid var(--kpm-line); }
.kpm-history-list article:first-child { border-top:0; }
.kpm-history-list article > span { width:31px; height:31px; display:grid; place-items:center; border-radius:9px; color:var(--kpm-purple); background:color-mix(in srgb,var(--kpm-purple) 9%,transparent); }
.kpm-history-list strong,.kpm-history-list small { display:block; }
.kpm-history-list strong { font-size:11px; }
.kpm-history-list small { margin-top:3px; color:var(--kpm-muted); font-size:9px; }
.kpm-history-list button { border:0; color:var(--kpm-purple); background:transparent; font-size:10px; font-weight:800; }
.kpm-empty { padding:24px; text-align:center; color:var(--kpm-muted); }
.kpm-empty svg { color:var(--kpm-purple); }
.kpm-empty p { margin:8px 0 0; font-size:11px; }
.kpm-foot { display:flex; justify-content:space-between; gap:20px; margin-top:18px; padding:0 4px; color:var(--kpm-muted); font-size:9px; }

.kpm-toast { position:sticky; z-index:35; top:12px; display:grid; grid-template-columns:auto 1fr auto; align-items:center; gap:10px; margin-bottom:12px; padding:12px 14px; border:1px solid; border-radius:13px; box-shadow:0 12px 30px rgba(24,28,27,.13); }
.kpm-toast.is-error { color:#a93a3a; border-color:#e5b4b4; background:#fff4f3; }
.kpm-toast.is-success { color:#237856; border-color:#add8c7; background:#f1fbf6; }
.kpm-toast p { margin:0; font-size:11px; font-weight:700; }
.kpm-toast button { border:0; color:inherit; background:transparent; }

.kpm-loading,.kpm-empty-page { min-height:calc(100vh - 80px); display:flex; flex-direction:column; align-items:center; justify-content:center; text-align:center; }
.kpm-loading > span,.kpm-preview-loading > span { width:34px; height:34px; border:2px solid color-mix(in srgb,var(--kpm-purple) 22%,transparent); border-top-color:var(--kpm-purple); border-radius:50%; animation:kpm-spin .8s linear infinite; }
.kpm-loading strong { margin-top:15px; }
.kpm-loading small { margin-top:5px; color:var(--kpm-muted); }
@keyframes kpm-spin { to { transform:rotate(360deg); } }
.kpm-empty-page { align-items:stretch; justify-content:flex-start; padding:30px clamp(20px,4vw,64px); }
.kpm-empty-page > .kpm-back { align-self:flex-start; }
.kpm-empty-page > div { width:min(650px,100%); margin:auto; padding:54px; border:1px solid var(--kpm-line); border-radius:27px; background:var(--kpm-card); box-shadow:0 18px 50px rgba(40,35,63,.08); }
.kpm-empty-page > div > svg { width:44px !important; height:44px !important; padding:10px; color:var(--kpm-purple); border-radius:14px; background:color-mix(in srgb,var(--kpm-purple) 10%,transparent); }
.kpm-empty-page > div > span { display:block; margin:16px 0 10px; color:var(--kpm-purple); font-size:10px; font-weight:820; letter-spacing:.13em; }
.kpm-empty-page h1 { margin:0; font-family:inherit; font-size:36px; font-weight:720; letter-spacing:-.035em; }
.kpm-empty-page p { color:var(--kpm-muted); line-height:1.7; }
.kpm-empty-page a { display:inline-flex; align-items:center; gap:8px; margin-top:10px; padding:12px 18px; border-radius:12px; color:#fff; background:var(--kpm-purple); text-decoration:none; font-size:12px; font-weight:800; }

.kpm-modal-wrap { position:fixed; z-index:10000; inset:0; display:grid; place-items:center; padding:20px; color:var(--kv-text,#1d2423); }
.kpm-modal-backdrop { position:absolute; inset:0; background:rgba(14,18,18,.48); backdrop-filter:blur(5px); }
.kpm-modal { position:relative; width:min(560px,100%); max-height:calc(100vh - 40px); overflow:auto; padding:24px; border:1px solid var(--kv-line-2,#e2e3df); border-radius:22px; background:var(--kv-card,#fff); box-shadow:0 28px 90px rgba(10,14,13,.25); animation:kpm-rise .18s ease-out; }
.kpm-modal--wide { width:min(820px,100%); }
.kpm-modal--preview { width:min(630px,100%); }
@keyframes kpm-rise { from { transform:translateY(12px) scale(.985); opacity:0; } }
.kpm-modal__head { align-items:flex-start; margin-bottom:22px; }
.kpm-modal__head h2 { margin:8px 0 5px; font-family:inherit; font-size:27px; font-weight:720; letter-spacing:-.03em; }
.kpm-modal__head p { margin:0; max-width:520px; color:var(--kv-text-muted,#747b79); font-size:11px; line-height:1.55; }
.kpm-modal__head > button { width:32px; height:32px; display:grid; place-items:center; border:1px solid var(--kv-line-2,#e2e3df); border-radius:10px; color:var(--kv-text-muted,#747b79); background:transparent; }
.kpm-modal__foot { justify-content:flex-end; margin-top:23px; padding-top:18px; border-top:1px solid var(--kv-line-2,#e2e3df); }
.kpm-foot-spacer { flex:1; }
.kpm-field { display:grid; gap:7px; margin-top:14px; }
.kpm-field > span,.kpm-rule-grid label > span,.kpm-lecture-row label > span { color:var(--kv-text-muted,#6f7775); font-size:10px; font-weight:750; }
.kpm-field small { font-weight:500; }
.kpm-field input,.kpm-rule-grid select,.kpm-lecture-row input,.kpm-lecture-row select,.kpm-av-row input { width:100%; min-height:42px; padding:9px 11px; border:1px solid var(--kv-line-2,#dfe1dc); border-radius:11px; outline:none; color:var(--kv-text,#1d2423); background:var(--kv-input,#fbfbf9); }
.kpm-field input:focus,.kpm-rule-grid select:focus,.kpm-lecture-row input:focus,.kpm-lecture-row select:focus,.kpm-av-row input:focus { border-color:var(--kpm-purple,#6f55eb); box-shadow:0 0 0 3px color-mix(in srgb,var(--kpm-purple,#6f55eb) 12%,transparent); }
.kpm-subject-explain,.kpm-preview-note { display:flex; gap:11px; margin-top:18px; padding:13px; border-radius:13px; color:#5f49d1; background:color-mix(in srgb,#6f55eb 7%,var(--kv-card,#fff)); }
.kpm-subject-explain p,.kpm-preview-note p { margin:0; }
.kpm-subject-explain strong,.kpm-subject-explain span,.kpm-preview-note strong,.kpm-preview-note span { display:block; }
.kpm-subject-explain strong,.kpm-preview-note strong { font-size:10px; }
.kpm-subject-explain span,.kpm-preview-note span { margin-top:3px; color:var(--kv-text-muted,#707876); font-size:9.5px; line-height:1.45; }

.kpm-preview-loading { min-height:210px; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:13px; color:var(--kv-text-muted,#707876); font-size:11px; }
.kpm-preview-numbers { display:grid; grid-template-columns:repeat(3,1fr); gap:10px; }
.kpm-preview-numbers article { padding:17px; border:1px solid var(--kv-line-2,#e2e3df); border-radius:14px; background:var(--kv-bg,#f7f6f2); }
.kpm-preview-numbers strong,.kpm-preview-numbers span { display:block; }
.kpm-preview-numbers strong { font-size:25px; font-family:inherit; }
.kpm-preview-numbers span { margin-top:4px; color:var(--kv-text-muted,#707876); font-size:9px; }
.kpm-preview-numbers .is-add strong { color:#2d8b67; }.kpm-preview-numbers .is-move strong { color:#6f55eb; }.kpm-preview-numbers .is-warn strong { color:#d05e46; }
.kpm-allocation { margin-top:16px; padding:15px; border:1px solid var(--kv-line-2,#e2e3df); border-radius:14px; }
.kpm-allocation h3 { margin:0 0 10px; font-size:11px; }
.kpm-allocation > div { display:flex; justify-content:space-between; gap:20px; padding:6px 0; color:var(--kv-text-muted,#707876); font-size:10px; border-top:1px solid color-mix(in srgb,var(--kv-line-2,#e2e3df) 70%,transparent); }
.kpm-allocation > div:first-of-type { border-top:0; }
.kpm-allocation strong { color:var(--kv-text,#1d2423); }

.kpm-availability-days { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:9px; }
.kpm-av-day { min-width:0; padding:12px; border:1px solid var(--kv-line-2,#e2e3df); border-radius:13px; }
.kpm-av-day__head { display:flex; align-items:center; justify-content:space-between; gap:8px; }
.kpm-av-day__head strong { font-size:11px; }
.kpm-av-day__head button,.kpm-add-row { border:0; color:var(--kpm-purple,#6f55eb); background:transparent; font-size:9px; font-weight:800; }
.kpm-av-day__head button { display:flex; align-items:center; gap:4px; }
.kpm-av-day__head svg { width:13px !important; height:13px !important; }
.kpm-av-windows { display:grid; gap:6px; margin-top:9px; }
.kpm-av-row { display:grid; grid-template-columns:1fr auto 1fr auto; align-items:center; gap:5px; }
.kpm-av-row input { min-width:0; min-height:35px; padding:6px; font-size:10px; }
.kpm-av-row > button { width:30px; height:30px; display:grid; place-items:center; border:0; color:#bd4848; background:transparent; }
.kpm-av-row > button svg { width:14px !important; height:14px !important; }
.kpm-av-off { margin:0; padding:8px 0 2px; color:var(--kv-text-muted,#707876); font-size:9.5px; }
.kpm-rule-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:9px; margin-top:14px; padding-top:14px; border-top:1px solid var(--kv-line-2,#e2e3df); }
.kpm-rule-grid label { display:grid; gap:6px; }
.kpm-lecture-row { display:grid; grid-template-columns:.7fr .8fr .8fr 1.3fr auto; align-items:end; gap:8px; margin-top:9px; padding:12px; border:1px solid var(--kv-line-2,#e2e3df); border-radius:13px; }
.kpm-lecture-row label { display:grid; gap:6px; min-width:0; }
.kpm-lecture-row > button { width:38px; height:38px; display:grid; place-items:center; border:0; border-radius:10px; color:#bd4848; background:color-mix(in srgb,#d24b4b 6%,transparent); }
.kpm-add-row { margin-top:11px; border:1px dashed color-mix(in srgb,var(--kpm-purple,#6f55eb) 35%,var(--kv-line-2,#e2e3df)); width:100%; }

@media (max-width:1100px) {
  .kpm-grid { grid-template-columns:1fr; }
  .kpm-subject-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .kpm-metrics { grid-template-columns:repeat(2,1fr); }
}
@media (max-width:720px) {
  .kpm-shell { padding:14px 12px 44px; }
  .kpm-hero { padding:15px 15px 0; border-radius:20px; }
  .kpm-hero__top { padding-bottom:18px; }
  .kpm-switch { display:none; }
  .kpm-hero__body { display:block; padding-bottom:18px; }
  .kpm-hero h1 { font-size:40px; }
  .kpm-hero__body p { font-size:12px; }
  .kpm-hero__body .kpm-primary { width:100%; margin-top:17px; }
  .kpm-health { margin:0 -15px; padding:13px 15px; grid-template-columns:auto 1fr; }
  .kpm-health > button { grid-column:2; justify-self:start; padding:0; }
  .kpm-metrics { gap:8px; }
  .kpm-metrics article { padding:12px; gap:8px; }
  .kpm-metrics article > svg { width:32px !important; height:32px !important; padding:7px; }
  .kpm-metrics strong { font-size:13px; }
  .kpm-card { padding:17px; border-radius:18px; }
  .kpm-section-head { display:block; }
  .kpm-section-head .kpm-quiet { margin-top:12px; }
  .kpm-day { grid-template-columns:76px minmax(80px,1fr) 72px; gap:8px; }
  .kpm-day__label small { display:none; }
  .kpm-legend__hint { display:none !important; }
  .kpm-subject-grid { grid-template-columns:1fr; }
  .kpm-subjects { margin-top:22px; }
  .kpm-subjects > .kpm-section-head { display:flex; }
  .kpm-foot { display:block; line-height:1.6; }
  .kpm-foot span { display:block; }
  .kpm-modal-wrap { padding:0; place-items:end stretch; }
  .kpm-modal { width:100% !important; max-height:92vh; border-radius:23px 23px 0 0; padding:19px 16px max(19px,env(safe-area-inset-bottom)); }
  .kpm-modal__head h2 { font-size:25px; }
  .kpm-preview-numbers { grid-template-columns:1fr 1fr 1fr; gap:6px; }
  .kpm-preview-numbers article { padding:12px 9px; }
  .kpm-preview-numbers strong { font-size:21px; }
  .kpm-availability-days { grid-template-columns:1fr; }
  .kpm-rule-grid { grid-template-columns:1fr 1fr 1fr; }
  .kpm-lecture-row { grid-template-columns:1fr 1fr auto; }
  .kpm-lecture-row .is-label { grid-column:1 / 3; }
  .kpm-lecture-row > button { grid-column:3; grid-row:1 / 3; align-self:center; }
  .kpm-modal__foot { flex-wrap:wrap; }
  .kpm-modal__foot .kpm-primary,.kpm-modal__foot .kpm-secondary { flex:1; }
  .kpm-empty-page { padding:18px 12px; }
  .kpm-empty-page > div { padding:34px 20px; }
  .kpm-empty-page h1 { font-size:34px; }
}

/* r3: Schedule and Study plan are sibling tabs, so they share one frame. */
.kpm-shell { max-width:1400px; padding:20px 30px 48px; }
.kpm-shared-head { display:grid; grid-template-columns:1fr auto 1fr; align-items:center; gap:18px; margin:0 0 12px; padding:0; }
.kpm-shared-head h1 { margin:0; font-size:28px; font-weight:520; line-height:1; }
.kpm-shared-head .sc-head__actions { justify-self:end; }
.kpm-head-replan { display:inline-flex; align-items:center; gap:8px; }
.kpm-head-replan svg { width:15px; height:15px; }
.kv-schedule-tabs { display:inline-flex; align-items:center; gap:3px; min-height:40px; padding:3px; border:1px solid color-mix(in srgb,var(--text,#fff) 11%,transparent); border-radius:12px; background:color-mix(in srgb,var(--surface,#10201c) 90%,transparent); }
.kv-schedule-tabs button { min-width:94px; min-height:32px; border:0; border-radius:9px; padding:0 13px; background:transparent; color:var(--muted,#93a59e); font:inherit; font-size:12px; font-weight:650; cursor:pointer; }
.kv-schedule-tabs button.is-active { background:color-mix(in srgb,var(--violet-bright,#6c55f5) 14%,var(--surface,#10201c)); color:var(--text,#fff); box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--violet-bright,#6c55f5) 18%,transparent); }
.kv-schedule-tabs--native { margin-inline:auto 18px; }
.sc-head:has(.kv-schedule-tabs--native) { display:grid; grid-template-columns:1fr auto auto; align-items:center; }
.kpm-hero { padding:0; border-radius:15px; }
.kpm-hero__body { min-height:84px; padding:16px 20px; align-items:center; }
.kpm-hero__body h2 { margin:5px 0 3px; font-family:inherit; font-size:20px; font-weight:740; line-height:1.12; letter-spacing:-.02em; }
.kpm-hero__body p { max-width:760px; font-size:12px; }
.kpm-health { margin-inline:0; border-radius:0 0 15px 15px; }
.kpm-metrics { margin-top:0; }

@media (max-width:900px) {
  .kpm-shared-head { grid-template-columns:1fr auto; }
  .kpm-shared-head .kv-schedule-tabs { grid-row:2; grid-column:1 / -1; width:100%; }
  .kpm-shared-head .kv-schedule-tabs button { flex:1; }
  .sc-head:has(.kv-schedule-tabs--native) { grid-template-columns:1fr auto; }
  .kv-schedule-tabs--native { grid-column:1 / -1; grid-row:2; width:100%; margin:8px 0 0; }
  .kv-schedule-tabs--native button { flex:1; }
}
@media (max-width:720px) {
  .kpm-shell { padding:12px 12px 40px; }
  .kpm-shared-head h1 { font-size:23px; }
  .kpm-head-replan span { display:none; }
  .kpm-head-replan { min-width:40px; justify-content:center; padding-inline:10px; }
  .kpm-hero__body { min-height:auto; padding:14px; }
}

@media (prefers-reduced-motion:reduce) {
  .kpm-primary,.kpm-subject,.kpm-modal { transition:none !important; animation:none !important; }
}

/* r2: match Kavvi's product UI rather than the landing-page/editorial treatment. */
#kv-plan-manager,#kv-usage-page { font-family:inherit; color:var(--text,#17151f); }
#kv-plan-manager *,#kv-usage-page * { box-sizing:border-box; }
.kv-plan-source-hidden,.kv-usage-source-hidden { display:none !important; }
.kpm-shell { max-width:1180px; padding:20px 24px 48px; gap:14px; }
.kpm-hero { border-radius:18px; padding:18px 20px 0; box-shadow:none; background:var(--surface,#fff); }
.kpm-hero:after { display:none; }
.kpm-hero__top { padding-bottom:14px; }
.kpm-hero__body { padding:2px 0 18px; align-items:center; }
.kpm-hero h1,.kpm-section-head h2,.kpm-empty-page h1,.kpm-modal__head h2,.kpm-preview-numbers strong { font-family:inherit; letter-spacing:-.025em; }
.kpm-hero h1 { margin:7px 0 5px; font-size:30px; line-height:1.1; font-weight:750; }
.kpm-hero__body p { max-width:610px; line-height:1.5; }
.kpm-health { margin-inline:-20px; padding:12px 20px; }
.kpm-metrics { gap:10px; }
.kpm-metrics article,.kpm-card,.kpm-subject { border-radius:16px; box-shadow:none; }
.kpm-metrics article { min-height:84px; padding:15px; }
.kpm-section-head h2 { margin:5px 0 3px; font-size:20px; font-weight:740; }
.kpm-card { padding:18px; }
.kpm-subjects-grid { gap:10px; }
.kpm-subject { padding:15px; }
.kpm-primary,.kpm-secondary,.kpm-quiet,.kpm-danger,.kpm-subject button,.kpm-subject a { font-family:inherit; }

#kv-usage-page { width:100%; min-height:100%; }
.kv-usage-shell { --ku-line:color-mix(in srgb,var(--text,#17151f) 11%,transparent); --ku-muted:var(--muted,#777381); --ku-surface:var(--surface,#fff); --ku-soft:color-mix(in srgb,var(--violet-bright,#6c55f5) 6%,var(--ku-surface)); max-width:1180px; margin:0 auto; padding:20px 24px 56px; }
.kv-usage-head { border:1px solid var(--ku-line); border-radius:18px; padding:17px 20px 20px; background:var(--ku-surface); }
.kv-usage-nav,.kv-usage-title,.kv-usage-section>header,.kv-usage-card__top,.kv-usage-meta,.kv-usage-foot { display:flex; align-items:center; justify-content:space-between; gap:14px; }
.kv-usage-nav { min-height:34px; padding-bottom:14px; border-bottom:1px solid var(--ku-line); }
.kv-usage-nav button { display:inline-flex; align-items:center; gap:7px; border:0; background:transparent; padding:5px 0; color:inherit; font:inherit; font-size:13px; font-weight:650; cursor:pointer; }
.kv-usage-nav button svg { width:17px; height:17px; }
[dir=rtl] .kv-usage-nav button svg { transform:scaleX(-1); }
.kv-usage-plan { border:1px solid color-mix(in srgb,var(--violet-bright,#6c55f5) 28%,transparent); border-radius:999px; padding:5px 10px; background:var(--ku-soft); color:var(--violet-bright,#6c55f5); font-size:11px; font-weight:750; }
.kv-usage-title { align-items:flex-end; padding-top:18px; }
.kv-usage-title>div>span { color:var(--violet-bright,#6c55f5); font-size:10px; font-weight:800; letter-spacing:.12em; }
.kv-usage-title h1 { margin:5px 0 4px; font-size:30px; line-height:1.08; letter-spacing:-.03em; }
.kv-usage-title p,.kv-usage-section header p { margin:0; color:var(--ku-muted); font-size:13px; line-height:1.5; }
.kv-usage-upgrade { display:inline-flex; align-items:center; gap:7px; min-height:40px; padding:0 14px; border-radius:10px; background:var(--violet-bright,#6c55f5); color:#fff !important; text-decoration:none; font-size:12px; font-weight:750; }
.kv-usage-upgrade svg { width:16px; height:16px; }
.kv-usage-section { margin-top:22px; }
.kv-usage-section>header { align-items:flex-end; margin-bottom:10px; }
.kv-usage-section h2 { margin:0 0 3px; font-size:18px; letter-spacing:-.02em; }
.kv-usage-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:10px; }
.kv-usage-card { min-width:0; border:1px solid var(--ku-line); border-radius:15px; padding:15px; background:var(--ku-surface); }
.kv-usage-card__top { margin-bottom:13px; }
.kv-usage-icon { display:grid; place-items:center; width:31px; height:31px; border-radius:9px; background:var(--ku-soft); color:var(--violet-bright,#6c55f5); }
.kv-usage-icon svg { width:16px; height:16px; }
.kv-usage-reset { color:var(--ku-muted); font-size:10px; font-weight:650; }
.kv-usage-card h3 { overflow:hidden; margin:0 0 6px; font-size:12px; font-weight:680; text-overflow:ellipsis; white-space:nowrap; }
.kv-usage-value { display:flex; align-items:baseline; gap:6px; }
.kv-usage-value strong { font-size:24px; line-height:1; letter-spacing:-.035em; }
.kv-usage-value span { color:var(--ku-muted); font-size:11px; }
.kv-usage-progress { overflow:hidden; height:6px; margin:14px 0 8px; border-radius:99px; background:color-mix(in srgb,var(--text,#17151f) 8%,transparent); }
.kv-usage-progress i { display:block; width:var(--usage); height:100%; border-radius:inherit; background:var(--violet-bright,#6c55f5); }
.kv-usage-card.is-low .kv-usage-progress i { background:#ef8354; }
.kv-usage-card.is-low .kv-usage-value strong { color:#dc7042; }
.kv-usage-meta { color:var(--ku-muted); font-size:9px; }
.kv-usage-bonus { display:inline-block; margin-top:9px; border-radius:99px; padding:4px 7px; background:color-mix(in srgb,#2fa47e 10%,transparent); color:#238064; font-size:9px; font-weight:750; }
.kv-usage-unlimited { display:flex; align-items:center; gap:7px; margin-top:14px; color:var(--ku-muted); font-size:10px; }
.kv-usage-unlimited i { width:28px; height:6px; border-radius:99px; background:linear-gradient(90deg,var(--violet-bright,#6c55f5),#42b69a); }
.kv-usage-foot { margin-top:22px; border-top:1px solid var(--ku-line); padding:15px 2px 0; color:var(--ku-muted); font-size:11px; }
.kv-usage-foot a { color:var(--violet-bright,#6c55f5); font-weight:750; text-decoration:none; }
.kv-usage-loading { display:grid; place-items:center; min-height:420px; gap:10px; }
.kv-usage-loading span { width:25px; height:25px; border:2px solid color-mix(in srgb,var(--violet-bright,#6c55f5) 20%,transparent); border-top-color:var(--violet-bright,#6c55f5); border-radius:50%; animation:kpm-spin .8s linear infinite; }
.kv-usage-entry svg { width:15px; height:15px; }

@media (max-width:900px) {
  .kv-usage-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
}
@media (max-width:720px) {
  .kpm-shell,.kv-usage-shell { padding:12px 12px 40px; }
  .kpm-hero,.kv-usage-head { border-radius:15px; padding:14px; }
  .kpm-hero h1,.kv-usage-title h1 { font-size:25px; }
  .kv-usage-title { align-items:flex-start; flex-direction:column; }
  .kv-usage-upgrade { width:100%; justify-content:center; }
  .kv-usage-grid { grid-template-columns:1fr; }
  .kv-usage-card { padding:14px; }
  .kv-usage-value strong { font-size:22px; }
}
