:root{--blue: #376cf5;--navy: #101b70;--bg: #fafbff;--lavender: #e9edff;--pink: #ffd6d9;--radius: 16px;--muted: #5b66a8;font-family:Plus Jakarta Sans,system-ui,sans-serif;color:var(--navy);font-size:16px}*{box-sizing:border-box}body{margin:0;background:var(--bg);line-height:1.5}h1,h2,h3{margin:0 0 8px}h2{font-size:1.25rem}.brand{font-weight:800;font-size:1.5rem;color:var(--blue)}.muted{color:var(--muted)}.error{color:#c0344a}.spacer{flex:1}.print-only{display:none}.card{background:#fff;border-radius:var(--radius);box-shadow:0 2px 12px #101b7014;padding:20px}.btn{min-height:48px;padding:0 24px;border:0;border-radius:12px;cursor:pointer;background:linear-gradient(135deg,var(--blue),#5a8bff);color:#fff;font:inherit;font-weight:700;display:inline-flex;align-items:center;justify-content:center;text-decoration:none}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-ghost{background:var(--lavender);color:var(--navy)}.btn-sm{min-height:40px;padding:0 14px;font-size:.9rem}.btn-lg{width:100%;min-height:56px;font-size:1.05rem}.link{background:none;border:0;color:var(--blue);cursor:pointer;font:inherit;text-decoration:underline;padding:8px 0;justify-self:start}:focus-visible{outline:3px solid var(--blue);outline-offset:2px}label{display:grid;gap:4px;font-weight:600;font-size:.9rem}input,select,textarea{font:inherit;font-weight:400;color:var(--navy);border:1.5px solid #cfd6f6;border-radius:10px;padding:10px 12px;min-height:44px;background:#fff;width:100%}textarea{resize:vertical}.form,.learn,.rph-form{display:grid;gap:12px}.row3{display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}fieldset{border:1.5px solid var(--lavender);border-radius:12px;padding:12px;margin:0;display:grid;gap:10px;min-width:0}legend{font-weight:700;padding:0 6px}.slot{background:#fcfdff}.std-item{background:var(--bg)}.checks{display:grid;gap:6px}.check{display:flex;align-items:flex-start;gap:10px;font-weight:400}.check input{width:20px;min-height:20px;margin-top:3px}.notice{background:var(--lavender);border-radius:12px;padding:12px 16px}.notice p{margin:0 0 8px}.problems{color:#c0344a;margin:0;padding-left:20px;font-size:.9rem}.empty{text-align:center;padding:24px 0;display:grid;gap:12px;justify-items:center}.login{min-height:100vh;display:grid;place-items:center;padding:16px;background:linear-gradient(160deg,var(--lavender),var(--bg) 60%)}.login-card{max-width:420px;width:100%;text-align:center;display:grid;gap:12px}.topbar{display:flex;align-items:center;gap:12px;padding:10px 16px;background:#fff;box-shadow:0 1px 6px #101b700f;flex-wrap:wrap;position:sticky;top:0;z-index:5}.nav{display:none;gap:8px;align-items:center;flex-wrap:wrap;width:100%;padding-top:8px}.nav.open{display:flex}.menu-toggle{margin-left:auto}.quota{display:grid;text-align:left;background:var(--lavender);border:0;border-radius:12px;padding:6px 12px;font:inherit;color:var(--navy);cursor:pointer;line-height:1.2}.quota small{color:var(--muted)}.quota.low{background:var(--pink)}.bell{position:relative;background:var(--lavender);border:0;border-radius:12px;min-width:44px;min-height:40px;cursor:pointer;font-size:1.1rem}.badge{position:absolute;top:-6px;right:-6px;background:#e0334c;color:#fff;border-radius:999px;font-size:.72rem;font-weight:700;min-width:20px;height:20px;display:grid;place-items:center;padding:0 5px}@media(min-width:900px){.nav{display:flex;width:auto;padding:0;margin-left:auto}.menu-toggle{display:none}}.layout{display:grid;gap:16px;padding:16px;max-width:1200px;margin:0 auto}.layout-admin{padding:16px;max-width:1000px;margin:0 auto}.main{display:grid;gap:12px;min-width:0}@media(min-width:768px){.layout{grid-template-columns:320px 1fr;align-items:start}.side{position:sticky;top:72px}}.banner{background:var(--pink);border-radius:12px;padding:12px 16px;display:flex;gap:12px;align-items:center;justify-content:space-between;flex-wrap:wrap}.cal{display:grid;gap:10px}.cal-head{display:flex;align-items:center;justify-content:space-between;gap:8px}.cal-grid{display:grid;gap:4px;text-align:center}.cal-dow{font-size:.72rem;font-weight:700;color:var(--muted)}.cal-day{position:relative;min-height:42px;border:0;border-radius:10px;background:transparent;font:inherit;color:var(--navy);cursor:pointer}.cal-day:hover{background:var(--lavender)}.cal-day.today{box-shadow:inset 0 0 0 2px var(--lavender);font-weight:700}.cal-day.sel{background:var(--blue);color:#fff}.dot{position:absolute;bottom:5px;left:50%;width:6px;height:6px;margin-left:-3px;border-radius:50%;background:var(--blue)}.cal-day.sel .dot{background:#fff}.modal-bg{position:fixed;inset:0;background:#101b7073;display:grid;place-items:start center;padding:16px;overflow-y:auto;z-index:20}.modal{width:100%;max-width:520px;margin:24px 0;display:grid;gap:12px}.modal.wide{max-width:860px}.modal-head{display:flex;justify-content:space-between;align-items:center}.tabs{display:flex;gap:6px;overflow-x:auto;padding-bottom:4px}.tab{border:0;background:var(--lavender);color:var(--navy);border-radius:10px;padding:8px 14px;min-height:40px;font:inherit;font-weight:600;cursor:pointer;white-space:nowrap;display:inline-flex;gap:6px;align-items:center}.tab.on{background:var(--blue);color:#fff}.tab small{opacity:.7}.tt,.wp,.sub,.admin{display:grid;gap:12px}.tt-slot{display:grid;gap:8px;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));align-items:end;border:1.5px solid var(--lavender);border-radius:12px;padding:10px}.tt-btns,.tt-tools,.tt-foot,.row-btns{display:flex;gap:6px;flex-wrap:wrap;align-items:center}.tt-tools{align-self:end}.steps{padding-left:20px;margin:0}.qr{max-width:240px;width:100%;justify-self:center;border-radius:12px;border:1px solid var(--lavender)}.gen{max-width:440px;width:100%;margin-top:12vh;text-align:center;display:grid;gap:14px}.gen-track{position:relative;display:flex;gap:4px;height:10px;margin:28px 0 8px}.gen-seg{flex:1;background:var(--lavender);border-radius:6px}.gen-seg.done{background:var(--blue)}.gen-seg.active{background:linear-gradient(90deg,var(--blue),#8fb0ff,var(--blue));background-size:200% 100%;animation:shimmer 1.4s linear infinite}.gen-paper{position:absolute;top:-26px;transform:translate(-50%);transition:left .8s ease;animation:bob 1.2s ease-in-out infinite;filter:drop-shadow(0 2px 3px rgba(16,27,112,.25))}.gen-steps{list-style:none;padding:0;margin:0;display:grid;gap:4px;color:var(--muted);text-align:left;justify-self:center}.gen-steps .active{color:var(--navy);font-weight:700}.gen-steps .done{color:var(--blue)}@keyframes shimmer{to{background-position:-200% 0}}@keyframes bob{50%{margin-top:-4px}}@media(prefers-reduced-motion:reduce){.gen-seg.active,.gen-paper{animation:none}}.rph-bar{display:flex;justify-content:space-between;align-items:center;gap:8px;flex-wrap:wrap}.rph-actions{display:flex;gap:8px;flex-wrap:wrap}.save{font-size:.85rem;font-weight:600}.save-saved{color:#1f9d55}.save-saving{color:var(--blue)}.save-unsynced,.save-conflict{color:#c0780a}.rph-view{display:grid;gap:12px}.rph-head{width:100%;border-collapse:collapse}.rph-head th,.rph-head td{border:1px solid var(--navy);padding:8px;text-align:center;font-size:.9rem}.rph-head .peach th,.rph-head .peach td{background:#fbd5b5}.inline-num{width:70px;min-height:36px;text-align:center;display:inline-block}.rph-slot{border:1px solid var(--navy);border-radius:4px;overflow:hidden}.masa{background:#c5d9f1;text-align:center;font-weight:700;padding:6px;font-size:.9rem}.slot-body{display:grid;gap:0}.slot-label{font-weight:700;padding:8px 10px 0;font-size:.85rem}.slot-main{padding:8px 10px 12px;display:grid;gap:10px}.std{margin:0;display:grid;gap:8px}.std div{display:grid;grid-template-columns:110px 1fr;gap:4px 8px;font-size:.9rem}.std dt{font-weight:700}.std dd{margin:0}.reflection{display:grid;gap:8px;border-top:1px dashed #cfd6f6;padding-top:8px}.outcome{display:grid;gap:6px;grid-template-columns:1fr 1fr}.outcome small{grid-column:1 / -1}.stat-grid{display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}.stat{display:grid;gap:4px}.stat strong{font-size:1.8rem}.row-card{display:flex;gap:16px;align-items:center;justify-content:space-between;flex-wrap:wrap;margin-bottom:8px}.row-card>*{min-width:0}.pill{display:inline-block;padding:2px 10px;border-radius:999px;font-size:.78rem;font-weight:700;background:var(--lavender)}.pill.paid{background:#d8f3e3;color:#14663a}.pill.expired{background:var(--pink)}.rph-print{display:none}@media print{@page{size:A4;margin:14mm}html,body{background:#fff;height:auto;overflow:visible}.no-print,.side,.topbar,.modal-bg{display:none!important}.layout{display:block;padding:0;max-width:none}.main{display:block}.main>:not(.rph-print){display:none!important}.rph-print{display:block;color:#000;font:10.5pt/1.32 Century Gothic,Plus Jakarta Sans,Arial,Microsoft YaHei,Noto Sans SC,Nirmala UI,Noto Sans Tamil,sans-serif}.rph-print table{width:100%;border-collapse:collapse;table-layout:fixed}.rph-print th,.rph-print td{border:.75pt solid #000;padding:3pt 7pt;vertical-align:top;text-align:left;overflow-wrap:anywhere}.rph-print tr{break-inside:avoid}.rph-print tr.pd-flow{break-inside:auto}.rph-print li,.rph-print p{orphans:2;widows:2;break-inside:avoid}.rph-print p,.rph-print ul,.rph-print ol{margin:0}.rph-print ul,.rph-print ol{padding-left:16pt}.rph-print li{padding-left:2pt}.pd-title{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;margin:0 0 8pt;break-after:avoid}.pd-title img{width:40mm;height:auto}.pd-title h1{grid-column:2;margin:0;font-size:14pt;line-height:1.25;text-align:center;font-weight:700}.pd-head{margin:0 0 8pt}.pd-head th{width:20%;text-align:center;vertical-align:middle}.pd-head td{width:30%;text-align:center;font-weight:700;vertical-align:middle}.pd-head .peach{background:#fbd4b4}.pd-slot{margin:0 0 6pt}.pd-slot>tbody>tr>th{width:20%;text-align:center;font-weight:700;vertical-align:middle}.pd-slot>tbody>tr>td{width:80%}.pd-slot tr.pd-masa{break-after:avoid}.pd-slot tr.pd-masa th,.pd-slot tr.pd-masa td{background:#c7daf1;text-align:center;font-weight:700}.pd-slot tr.pd-sub>th{font-weight:400}.pd-slot td p+p{margin-top:2pt}.pd-std{margin:0}.pd-std th{width:32%;text-align:center;font-weight:400;vertical-align:middle}.pd-std td{width:68%}}.tt-vhead{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}.tt-vhead h3{margin:0}.tt-ver{display:grid;grid-template-columns:1fr auto auto;gap:12px;align-items:center;border:1.5px solid var(--lavender);border-radius:12px;padding:10px 14px}.tt-ver.active{border-color:#14663a}.pill.future{background:#fff1c9;color:#7a5200}.tt-ro{border:0;padding:0;margin:0;min-width:0;display:grid;gap:8px}@media(max-width:520px){.tt-ver{grid-template-columns:1fr auto}.tt-ver .row-btns{grid-column:1 / -1}}.tt-dates{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px;align-items:end;border:1.5px solid var(--lavender);border-radius:12px;padding:12px 14px}.tt-date{display:grid;gap:4px}.tt-date>small:first-child{text-transform:uppercase;letter-spacing:.04em;font-weight:700}.tt-fix{display:grid;gap:8px;border:2px solid var(--blue, #3b5bdb);border-radius:12px;padding:14px;background:#f5f7ff}.tt-fix h4{margin:0}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.lang-field{display:grid;gap:4px;align-content:start}.lang-label{font-size:.85rem}.lang-lock{display:inline-flex;align-items:center;gap:6px;min-height:40px;padding:0 12px;border-radius:12px;background:var(--lavender);color:var(--navy);font-weight:700;width:fit-content}.lang-field small{line-height:1.3}.notice ul{margin:6px 0 0;padding-left:20px;font-size:.9rem}.skipped{border:1.5px dashed var(--lavender);border-radius:12px;padding:12px;display:grid;gap:8px}.skipped h3{margin:0;font-size:1rem;display:flex;align-items:center;gap:8px}.skipped .count{background:var(--lavender);border-radius:999px;padding:0 10px;font-size:.85rem}.skipped p{margin:0;font-size:.9rem}.skipped ul{list-style:none;margin:0;padding:0;display:grid;gap:8px}.skipped li{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px;background:#fcfdff;border-radius:10px;padding:8px 12px}.skipped li .btn{min-height:44px}.tt-keep{grid-column:1 / -1}.tt-tpl{display:flex;flex-direction:column;align-items:flex-start;gap:4px;margin:0 0 12px}
