@font-face{font-family:__Playfair_Display_9ae7ba;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/47f136985ef5b5cb-s.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:__Playfair_Display_9ae7ba;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/4ead58c4dcc3f285-s.woff2) format("woff2");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-family:__Playfair_Display_9ae7ba;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/28a2004cf8372660-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:__Playfair_Display_9ae7ba;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/eaead17c7dbfcd5d-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:__Playfair_Display_9ae7ba;font-style:normal;font-weight:700;font-display:swap;src:url(/_next/static/media/47f136985ef5b5cb-s.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:__Playfair_Display_9ae7ba;font-style:normal;font-weight:700;font-display:swap;src:url(/_next/static/media/4ead58c4dcc3f285-s.woff2) format("woff2");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-family:__Playfair_Display_9ae7ba;font-style:normal;font-weight:700;font-display:swap;src:url(/_next/static/media/28a2004cf8372660-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:__Playfair_Display_9ae7ba;font-style:normal;font-weight:700;font-display:swap;src:url(/_next/static/media/eaead17c7dbfcd5d-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:__Playfair_Display_Fallback_9ae7ba;src:local("Times New Roman");ascent-override:97.25%;descent-override:22.56%;line-gap-override:0.00%;size-adjust:111.26%}.__className_9ae7ba{font-family:__Playfair_Display_9ae7ba,__Playfair_Display_Fallback_9ae7ba;font-style:normal}.__variable_9ae7ba{--font-display:"__Playfair_Display_9ae7ba","__Playfair_Display_Fallback_9ae7ba"}@font-face{font-family:__DM_Sans_d541e6;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/7ab938503e4547a1-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:__DM_Sans_d541e6;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/13971731025ec697-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:__DM_Sans_d541e6;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/7ab938503e4547a1-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:__DM_Sans_d541e6;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/13971731025ec697-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:__DM_Sans_d541e6;font-style:normal;font-weight:600;font-display:swap;src:url(/_next/static/media/7ab938503e4547a1-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:__DM_Sans_d541e6;font-style:normal;font-weight:600;font-display:swap;src:url(/_next/static/media/13971731025ec697-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:__DM_Sans_Fallback_d541e6;src:local("Arial");ascent-override:94.90%;descent-override:29.66%;line-gap-override:0.00%;size-adjust:104.53%}.__className_d541e6{font-family:__DM_Sans_d541e6,__DM_Sans_Fallback_d541e6;font-style:normal}.__variable_d541e6{--font-sans:"__DM_Sans_d541e6","__DM_Sans_Fallback_d541e6"}@font-face{font-family:__IBM_Plex_Sans_Thai_edce77;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/db9bfcd87f1d73a3-s.woff2) format("woff2");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:__IBM_Plex_Sans_Thai_edce77;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/4e2312c98e240c05-s.p.woff2) format("woff2");unicode-range:u+02d7,u+0303,u+0331,u+0e01-0e5b,u+200c-200d,u+25cc}@font-face{font-family:__IBM_Plex_Sans_Thai_edce77;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/feed52454563c595-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:__IBM_Plex_Sans_Thai_edce77;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/f83e5507ec3854fa-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:__IBM_Plex_Sans_Thai_edce77;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/8934311971e59087-s.woff2) format("woff2");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:__IBM_Plex_Sans_Thai_edce77;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/bfdf244a9384e8b2-s.p.woff2) format("woff2");unicode-range:u+02d7,u+0303,u+0331,u+0e01-0e5b,u+200c-200d,u+25cc}@font-face{font-family:__IBM_Plex_Sans_Thai_edce77;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/b10e9fa1144bb4fb-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:__IBM_Plex_Sans_Thai_edce77;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/d13ab8ed065835e4-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:__IBM_Plex_Sans_Thai_edce77;font-style:normal;font-weight:600;font-display:swap;src:url(/_next/static/media/d8c0f620f258dcc1-s.woff2) format("woff2");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:__IBM_Plex_Sans_Thai_edce77;font-style:normal;font-weight:600;font-display:swap;src:url(/_next/static/media/5fcb63deed33aab6-s.p.woff2) format("woff2");unicode-range:u+02d7,u+0303,u+0331,u+0e01-0e5b,u+200c-200d,u+25cc}@font-face{font-family:__IBM_Plex_Sans_Thai_edce77;font-style:normal;font-weight:600;font-display:swap;src:url(/_next/static/media/e595057e1ab84c19-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:__IBM_Plex_Sans_Thai_edce77;font-style:normal;font-weight:600;font-display:swap;src:url(/_next/static/media/861fabf8a4ffc042-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:__IBM_Plex_Sans_Thai_Fallback_edce77;src:local("Arial");ascent-override:110.31%;descent-override:52.78%;line-gap-override:0.00%;size-adjust:101.17%}.__className_edce77{font-family:__IBM_Plex_Sans_Thai_edce77,__IBM_Plex_Sans_Thai_Fallback_edce77;font-style:normal}.__variable_edce77{--font-thai:"__IBM_Plex_Sans_Thai_edce77","__IBM_Plex_Sans_Thai_Fallback_edce77"}:root{--parchment:#e4dfd0;--parchment-light:#f0ece1;--parchment-deep:#d4cec0;--teal-ink:#0f3d3a;--teal-mid:#1f5c57;--teal-soft:#2d7a73;--teal-glow:rgba(45,122,115,.18);--ink:#1a1612;--ink-muted:#4a443c;--ink-faint:#7a7368;--gold:#b8860b;--gold-soft:#d4a843;--danger:#9b2c2c;--border:rgba(15,61,58,.14);--shadow:rgba(26,22,18,.08);--font-display:"Playfair Display",Georgia,serif;--font-sans:"DM Sans",system-ui,sans-serif;--font-thai:"IBM Plex Sans Thai","Sarabun",sans-serif}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;min-height:100vh;color:var(--ink);font-family:var(--font-thai);background:radial-gradient(ellipse 120% 80% at 10% -10%,var(--teal-glow),transparent 55%),radial-gradient(ellipse 90% 60% at 100% 0,rgba(184,134,11,.08),transparent 50%),linear-gradient(165deg,var(--parchment-light) 0,var(--parchment) 45%,var(--parchment-deep) 100%);-webkit-font-smoothing:antialiased}a{color:var(--teal-mid);text-decoration:none}a:hover{color:var(--teal-ink)}.login-shell{min-height:100vh;display:grid;place-items:center;padding:24px 16px}.login-panel{width:min(420px,100%);padding:36px 32px 32px;background:hsla(44,33%,91%,.72);border:1px solid var(--border);border-radius:4px;box-shadow:0 24px 64px var(--shadow);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.login-mark{font-family:var(--font-display);font-size:2.4rem;font-weight:700;letter-spacing:.08em;color:var(--teal-ink);margin:0 0 4px}.login-tagline{margin:0 0 28px;color:var(--ink-muted);font-size:.92rem}.field{margin-bottom:16px}.field label{display:block;font-size:.82rem;font-weight:500;color:var(--ink-muted);margin-bottom:6px;letter-spacing:.02em}.field input{width:100%;padding:11px 14px;border:1px solid var(--border);border-radius:3px;background:var(--parchment-light);color:var(--ink);font-family:inherit;font-size:1rem;transition:border-color .15s,box-shadow .15s}.field input:focus{outline:none;border-color:var(--teal-soft);box-shadow:0 0 0 3px var(--teal-glow)}.btn-primary{width:100%;margin-top:8px;padding:12px 18px;border:none;border-radius:3px;background:var(--teal-ink);color:var(--parchment-light);font-family:inherit;font-size:.95rem;font-weight:600;cursor:pointer;transition:background .15s,transform .1s}.btn-primary:hover:not(:disabled){background:var(--teal-mid)}.btn-primary:disabled{opacity:.65;cursor:not-allowed}.error{margin-top:12px;color:var(--danger);font-size:.88rem}.dashboard{max-width:1200px;margin:0 auto;padding:20px 16px 48px}.dashboard-header{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:28px;padding-bottom:20px;border-bottom:2px solid var(--teal-ink)}.brand-block h1{font-family:var(--font-display);font-size:clamp(2rem,5vw,2.8rem);font-weight:700;letter-spacing:.06em;color:var(--teal-ink);margin:0;line-height:1}.brand-block p{margin:6px 0 0;color:var(--ink-muted);font-size:.9rem}.header-actions{display:flex;align-items:center;gap:10px}.btn-ghost{padding:8px 14px;border:1px solid var(--border);border-radius:3px;background:transparent;color:var(--ink-muted);font-family:inherit;font-size:.85rem;cursor:pointer;transition:border-color .15s,color .15s}.btn-ghost:hover{border-color:var(--teal-soft);color:var(--teal-ink)}.status-dots{display:flex;gap:8px;font-size:.75rem;color:var(--ink-faint)}.status-dot{display:inline-flex;align-items:center;gap:4px}.status-dot:before{content:"";width:7px;height:7px;border-radius:50%;background:var(--ink-faint)}.status-dot.ok:before{background:var(--teal-soft)}.status-dot.off:before{background:#c4bdb0}.composition{display:grid;grid-template-columns:1fr 1.1fr .9fr;grid-template-rows:auto auto;grid-gap:0;gap:0;border:1px solid var(--border);border-radius:4px;overflow:hidden;background:hsla(44,33%,91%,.55);box-shadow:0 16px 48px var(--shadow)}.section{padding:22px 20px;border-right:1px solid var(--border);border-bottom:1px solid var(--border)}.section:nth-child(3n){border-right:none}.section-head{display:flex;align-items:baseline;justify-content:space-between;gap:8px;margin-bottom:16px}.section-head h2{font-family:var(--font-display);font-size:1.05rem;font-weight:600;color:var(--teal-ink);margin:0;letter-spacing:.03em}.section-head span{font-size:.72rem;color:var(--ink-faint);text-transform:uppercase;letter-spacing:.08em}.item-list{list-style:none;margin:0;padding:0}.item-list li{display:flex;align-items:flex-start;gap:10px;padding:9px 0;border-bottom:1px dotted rgba(15,61,58,.12);font-size:.88rem;line-height:1.45}.item-list li:last-child{border-bottom:none}.item-date{flex-shrink:0;font-size:.72rem;color:var(--ink-faint);min-width:52px;padding-top:2px}.item-title{color:var(--ink)}.item-emoji{flex-shrink:0}.empty{color:var(--ink-faint);font-size:.88rem;font-style:italic}.cal-block{margin-bottom:18px}.cal-block:last-child{margin-bottom:0}.cal-block h3{font-size:.78rem;font-weight:600;text-transform:uppercase;letter-spacing:.1em;color:var(--gold);margin:0 0 10px}.cal-event{display:grid;grid-template-columns:56px 1fr;grid-gap:4px 10px;gap:4px 10px;padding:7px 0;border-bottom:1px dotted rgba(15,61,58,.1);font-size:.86rem}.cal-event:last-child{border-bottom:none}.cal-time{color:var(--teal-mid);font-weight:500;font-size:.82rem}.cal-day{font-size:.72rem;color:var(--ink-faint)}.teach-cards{display:flex;flex-direction:column;gap:10px}.teach-card{display:block;padding:14px 16px;border:1px solid var(--border);border-radius:3px;background:var(--parchment-light);transition:border-color .15s,transform .1s,box-shadow .15s}.teach-card:hover{border-color:var(--teal-soft);transform:translateY(-1px);box-shadow:0 6px 20px var(--shadow)}.teach-card strong{display:block;font-size:.92rem;color:var(--teal-ink);margin-bottom:4px}.teach-card span{font-size:.78rem;color:var(--ink-faint)}.summary-row{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:12px;gap:12px;margin-top:16px}.summary-stat{text-align:center;padding:12px 8px;border-top:2px solid var(--teal-soft)}.summary-stat .num{font-family:var(--font-display);font-size:1.8rem;font-weight:700;color:var(--teal-ink);line-height:1}.summary-stat .lbl{font-size:.72rem;color:var(--ink-muted);margin-top:4px}.section-wide{grid-column:1/-1;border-right:none;border-bottom:none}.loading-state{text-align:center;padding:80px 20px;color:var(--ink-muted);font-size:.95rem}@media (max-width:960px){.composition{grid-template-columns:1fr}.section{border-right:none}.section-wide{grid-column:1}.summary-row{grid-template-columns:repeat(3,1fr)}}@media (max-width:480px){.summary-row{grid-template-columns:1fr;gap:8px}.summary-stat{display:flex;align-items:center;justify-content:space-between;text-align:left;padding:10px 0;border-top:none;border-bottom:1px dotted rgba(15,61,58,.12)}.summary-stat .num{font-size:1.4rem}}