:root{--color-bg: #ffffff;--color-bg-soft: #f5f7fa;--color-surface: #ffffff;--color-surface-muted: #eef3f9;--color-line: #e6eaf0;--color-line-strong: #d5dbe4;--color-sky-100: #eaf2fa;--color-sky-200: #d8e8f6;--color-sky-300: #b9d4ec;--color-sky-400: #93bce2;--color-accent: #4a90d9;--color-accent-strong: #2f6fb6;--grad-hero: linear-gradient(180deg, #9ec2e4 0%, #cfe2f3 55%, #ffffff 100%);--grad-panel: linear-gradient(180deg, #aecde9 0%, #82abd5 100%);--text-primary: #16181d;--text-secondary: #5c6470;--text-muted: #98a1ad;--text-invert: #ffffff;--color-good: #2fa96d;--color-good-soft: #e6f6ee;--color-warn: #d99c1b;--color-warn-soft: #fbf3df;--color-bad: #e5484d;--color-bad-soft: #fdecec;--btn-primary-bg: #16181d;--btn-primary-bg-hover: #2c2f36;--btn-primary-fg: #ffffff;--btn-secondary-bg: #ffffff;--btn-secondary-fg: #16181d;--btn-secondary-line: #d5dbe4;--font-sans: "Inter", system-ui, "Segoe UI", "Noto Sans Thai", sans-serif;--font-display: "Outfit", "Inter", system-ui, "Noto Sans Thai", sans-serif;--fs-hero: clamp(2rem, 4.5vw, 3rem);--fs-h1: 1.6rem;--fs-h2: 1.25rem;--fs-body: .95rem;--fs-small: .82rem;--fs-tiny: .72rem;--fw-regular: 400;--fw-medium: 500;--fw-semibold: 600;--fw-bold: 700;--radius-sm: 8px;--radius-md: 12px;--radius-lg: 16px;--radius-xl: 24px;--radius-pill: 999px;--shadow-sm: 0 1px 2px rgba(22, 24, 29, .05);--shadow-md: 0 4px 16px rgba(22, 24, 29, .07);--shadow-lg: 0 12px 36px rgba(22, 24, 29, .1);--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 24px;--space-6: 32px;--space-7: 48px;--space-8: 64px;--container-max: 1080px}*{box-sizing:border-box}body{margin:0;background:var(--color-bg);color:var(--text-primary);font-family:var(--font-sans);font-size:var(--fs-body)}.app{max-width:var(--container-max);margin:0 auto;padding:0 var(--space-4) var(--space-7)}h1,h2,h3{font-family:var(--font-display)}.topbar{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:var(--space-3);padding:var(--space-4) var(--space-1);border-bottom:1px solid var(--color-line);margin-bottom:var(--space-5);background:var(--color-bg)}@media (max-width: 760px){.who{flex-wrap:wrap}.who>span:not(.credit){display:none}}.brand{display:flex;align-items:center;gap:var(--space-2);font-family:var(--font-display);font-size:1.15rem;font-weight:var(--fw-bold)}.cat-logo{display:block;flex-shrink:0}.footer-brand{display:inline-flex;align-items:center;gap:var(--space-2)}.brand span{color:var(--text-muted);font-weight:var(--fw-regular);font-size:var(--fs-small)}.who{display:flex;align-items:center;gap:var(--space-3);font-size:var(--fs-small);color:var(--text-secondary)}.who>span:not(.credit){color:var(--text-muted)}.who .credit{background:var(--color-good-soft);border:1px solid var(--color-line);padding:3px 10px;border-radius:var(--radius-pill);color:var(--color-good);font-weight:var(--fw-semibold);white-space:nowrap}.card{background:var(--color-surface);border:1px solid var(--color-line);border-radius:var(--radius-lg);padding:var(--space-5);box-shadow:var(--shadow-sm)}.auth{max-width:380px;margin:var(--space-7) auto;box-shadow:var(--shadow-md);border-radius:var(--radius-xl)}.auth h1{margin:0 0 var(--space-5);font-size:var(--fs-h1);text-align:center}form{display:flex;flex-direction:column;gap:var(--space-4)}label{display:flex;flex-direction:column;gap:var(--space-2);font-size:var(--fs-small);color:var(--text-secondary)}input{background:var(--color-bg-soft);border:1px solid var(--color-line);border-radius:var(--radius-md);padding:10px 12px;color:var(--text-primary);font-size:var(--fs-body);font-family:var(--font-sans)}input:focus{outline:none;border-color:var(--color-accent);background:var(--color-surface)}button{background:var(--btn-primary-bg);color:var(--btn-primary-fg);border:none;border-radius:var(--radius-pill);padding:10px 20px;font-size:var(--fs-body);font-weight:var(--fw-semibold);font-family:var(--font-sans);cursor:pointer;transition:background .15s ease}button:hover:not(:disabled){background:var(--btn-primary-bg-hover)}button:disabled{opacity:.4;cursor:not-allowed}button.ghost{background:var(--btn-secondary-bg);color:var(--btn-secondary-fg);border:1px solid var(--btn-secondary-line);font-weight:var(--fw-medium);padding:7px 14px}button.ghost:hover:not(:disabled){background:var(--color-bg-soft)}button.link{background:none;border:none;color:var(--color-accent);padding:0;font-weight:var(--fw-medium)}button.link:hover:not(:disabled){background:none;color:var(--color-accent-strong)}.switch{margin:var(--space-4) 0 0;font-size:var(--fs-small);color:var(--text-secondary);text-align:center}.error{color:var(--color-bad);background:var(--color-bad-soft);border-radius:var(--radius-sm);padding:6px 10px;font-size:var(--fs-small)}.muted{color:var(--text-muted)}.row{display:flex;justify-content:space-between;align-items:flex-end;margin:var(--space-2) 0 var(--space-4)}.row h2{margin:0;font-size:var(--fs-h2)}.mins{flex-direction:row;align-items:center;gap:var(--space-2)}.mins input{width:80px}.devices{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:var(--space-4)}.device{display:flex;flex-direction:column;gap:var(--space-3)}.device:hover{box-shadow:var(--shadow-md)}.dev-head{display:flex;justify-content:space-between;align-items:center}.badge{font-size:var(--fs-tiny);font-weight:var(--fw-semibold);padding:2px 10px;border-radius:var(--radius-pill)}.badge.on{background:var(--color-good-soft);color:var(--color-good)}.badge.off{background:var(--color-bad-soft);color:var(--color-bad)}.specs{font-size:var(--fs-tiny);color:var(--text-muted)}.rental{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--space-5);background:var(--color-sky-100);border-color:var(--color-sky-300)}.rental-info{display:flex;flex-direction:column;gap:var(--space-1)}.rental-info .room{font-size:var(--fs-tiny);color:var(--text-secondary)}.rental-info .expired{color:var(--color-bad)}.play{background:var(--color-accent)}.play:hover:not(:disabled){background:var(--color-accent-strong)!important}.rental-actions{display:flex;flex-direction:column;gap:var(--space-2);align-items:stretch}button.ghost.danger{color:var(--color-bad);border-color:var(--color-bad)}button.ghost.danger:hover:not(:disabled){background:var(--color-bad);color:#fff}.notice{color:var(--color-good);background:var(--color-good-soft);border-radius:var(--radius-sm);padding:8px 12px;font-size:var(--fs-small);margin-bottom:var(--space-3)}.package{display:flex;flex-direction:column;gap:var(--space-2);align-items:flex-start}.package:hover{box-shadow:var(--shadow-md)}.package strong{font-size:var(--fs-body)}.pkg-minutes{font-family:var(--font-display);font-size:1.9rem;font-weight:var(--fw-bold);line-height:1}.pkg-minutes span{font-size:var(--fs-small);font-weight:var(--fw-medium);color:var(--text-muted)}.pkg-price{font-size:var(--fs-h2);font-weight:var(--fw-semibold);color:var(--color-accent)}.package button{align-self:stretch;margin-top:var(--space-2)}.badge.warn{background:var(--color-warn-soft);color:var(--color-warn)}.who .nav{display:flex;gap:2px;margin-right:var(--space-2);background:var(--color-bg-soft);border:1px solid var(--color-line);border-radius:var(--radius-pill);padding:3px}.who .nav button{background:transparent;color:var(--text-secondary);border:none;padding:6px 14px;font-size:var(--fs-small);font-weight:var(--fw-medium);border-radius:var(--radius-pill);white-space:nowrap}.who .nav button:hover:not(:disabled){background:var(--color-surface);color:var(--text-primary)}.who .nav button.active{background:var(--btn-primary-bg);color:var(--btn-primary-fg);font-weight:var(--fw-semibold)}.admin-tabs{display:flex;gap:var(--space-1);margin-bottom:var(--space-5);border-bottom:1px solid var(--color-line);overflow-x:auto}.admin-tabs button{background:none;color:var(--text-muted);border:none;border-bottom:2px solid transparent;border-radius:0;padding:8px 14px;font-size:var(--fs-small);font-weight:var(--fw-medium);margin-bottom:-1px;white-space:nowrap;transition:color .15s ease,border-color .15s ease}.admin-tabs button:hover:not(:disabled){background:none;color:var(--text-primary)}.admin-tabs button.active{background:none;color:var(--text-primary);border-bottom-color:var(--color-accent);font-weight:var(--fw-semibold)}.admin-section{overflow-x:auto}.admin-add{flex-direction:row;flex-wrap:wrap;gap:var(--space-2);margin-bottom:var(--space-4)}.admin-add input{flex:1;min-width:120px}.admin-table{width:100%;border-collapse:collapse;font-size:var(--fs-small)}.admin-table th,.admin-table td{text-align:left;padding:var(--space-2) var(--space-3);border-bottom:1px solid var(--color-line)}.admin-table th{color:var(--text-muted);font-weight:var(--fw-medium);font-size:var(--fs-tiny);text-transform:uppercase;letter-spacing:.04em}.admin-table td.actions{display:flex;gap:var(--space-2)}.admin-table select{background:var(--color-bg-soft);border:1px solid var(--color-line);border-radius:var(--radius-sm);color:var(--text-primary);padding:4px 6px;font-family:var(--font-sans)}.kpis{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:var(--space-4)}.kpi{display:flex;flex-direction:column;gap:var(--space-1)}.kpi-label{font-size:var(--fs-tiny);text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);font-weight:var(--fw-semibold)}.kpi-value{font-family:var(--font-display);font-size:2rem;font-weight:var(--fw-bold);line-height:1.1}.kpi-value.good{color:var(--color-good)}.kpi-value.warn{color:var(--color-warn)}.kpi-sub{font-size:var(--fs-small);color:var(--text-muted)}.ledger-row>td{padding:0;background:var(--color-bg-soft)}.admin-table.ledger{margin:0}.admin-table.ledger th{font-size:10px}.admin-table.ledger .pos{color:var(--color-good);font-weight:var(--fw-semibold)}.admin-table.ledger .neg{color:var(--color-bad);font-weight:var(--fw-semibold)}.dashboard{display:grid;grid-template-columns:320px 1fr;gap:var(--space-5);align-items:start}@media (max-width: 900px){.dashboard{grid-template-columns:1fr}}.rental-list .rental{margin-bottom:var(--space-3)}.rental.watching{border-color:var(--color-accent);box-shadow:0 0 0 1px var(--color-accent)}.rental-info .countdown{font-size:var(--fs-small);color:var(--color-good);font-weight:var(--fw-semibold)}.player-pane{background:var(--color-surface);border:1px solid var(--color-line);border-radius:var(--radius-lg);overflow:hidden;box-shadow:var(--shadow-md)}.player-head{display:flex;justify-content:space-between;align-items:center;padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--color-line)}.player-frame{display:block;width:100%;height:min(78vh,900px);border:0;background:#000}.player-pane.fs{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;border:0;border-radius:0}.player-pane.fs .player-head{display:none}.player-pane.fs .player-frame{height:100vh;height:100dvh}.landing{--kw-pink: #ff9ec4;--kw-pink-deep: #e8659e;--kw-pink-soft: #ffe6f1;--kw-cream: #fff7f2;--kw-mint: #e0f6ec;--kw-mint-line: #bfe8d3;--kw-lav: #efe7fc;--kw-lav-line: #dcccf7;--kw-sky: #e4f1fc;--kw-sky-line: #c9e3f8;--kw-peach: #fff1e2;--kw-peach-line: #ffdfba;--kw-ink: #8a6b78;--kw-line: #ffd4e6;--kw-round: "Itim", "Mali", var(--font-display), system-ui, sans-serif;display:flex;flex-direction:column;gap:var(--space-8);font-family:"Mali",var(--font-sans),system-ui,sans-serif}.landing .hero{position:relative;overflow:hidden;text-align:center;padding:var(--space-8) var(--space-4) var(--space-6);margin:0 calc(-1 * var(--space-4));background:radial-gradient(120% 90% at 15% 0%,#ffe6f1,#ffe6f100 55%),radial-gradient(120% 90% at 88% 5%,#e6f0ff,#e6f0ff00 55%),linear-gradient(180deg,#fff3f8,#f5fbff 60%,#fff);border-radius:0 0 32px 32px}.landing .hero:before,.landing .hero:after{content:"";position:absolute;border-radius:50%;pointer-events:none}.landing .hero:before{width:90px;height:90px;top:40px;left:6%;background:radial-gradient(circle at 50% 50%,#ffd0e4,#ffd0e400 70%)}.landing .hero:after{width:120px;height:120px;bottom:30px;right:4%;background:radial-gradient(circle at 50% 50%,#cfe6ff,#cfe6ff00 70%)}.hero-kicker{position:relative;display:inline-flex;align-items:center;gap:6px;margin:0 0 var(--space-4);padding:6px 16px;border-radius:var(--radius-pill);background:#fff;border:2px solid var(--kw-line);box-shadow:0 3px #ff9ec447;font-family:var(--kw-round);font-size:var(--fs-small);font-weight:var(--fw-regular);letter-spacing:.01em;color:var(--kw-pink-deep)}.landing .hero h1{position:relative;margin:0 0 var(--space-4);font-family:var(--kw-round);font-size:var(--fs-hero);font-weight:400;line-height:1.28;color:#ff7fb0;text-shadow:0 2px 0 #fff,0 3px 8px rgba(255,127,176,.25)}.hero-sub{position:relative;max-width:520px;margin:0 auto var(--space-5);color:var(--kw-ink);font-size:1.05rem;line-height:1.75}.hero-cta{position:relative;display:flex;justify-content:center;flex-wrap:wrap;gap:var(--space-3);margin-bottom:var(--space-6)}.landing .hero-cta button{font-family:var(--kw-round);font-size:1.02rem;font-weight:400;padding:11px 26px;border-radius:var(--radius-pill);transition:transform .12s ease,box-shadow .12s ease}.landing .hero-cta button:not(.ghost){background:linear-gradient(180deg,#ffa9cd,#ff86b8);color:#fff;border:none;box-shadow:0 4px #ef6ea6}.landing .hero-cta button:not(.ghost):hover:not(:disabled){background:linear-gradient(180deg,#ffb6d5,#ff92c0);transform:translateY(-2px);box-shadow:0 6px #ef6ea6}.landing .hero-cta button.ghost{background:#fff;color:var(--kw-pink-deep);border:2px solid var(--kw-line);box-shadow:0 4px #ff9ec447}.landing .hero-cta button.ghost:hover:not(:disabled){background:var(--kw-pink-soft);transform:translateY(-2px)}.hero-art{position:relative;max-width:680px;margin:0 auto;padding:0 var(--space-3)}.hero-art-svg{display:block;width:100%;height:auto}@media (max-width: 560px){.hero-art{padding:0}}.features{text-align:center}.features h2{margin:0 0 var(--space-6);font-size:var(--fs-h1);font-family:var(--kw-round);font-weight:400;color:var(--kw-pink-deep)}.feature-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-4);text-align:left}@media (max-width: 860px){.feature-grid{grid-template-columns:repeat(2,1fr)}}@media (max-width: 560px){.feature-grid{grid-template-columns:1fr}}.feature{background:var(--kw-pink-soft);border:2px solid var(--kw-line);border-radius:22px;padding:var(--space-5);transition:transform .14s ease,box-shadow .14s ease}.feature:hover{transform:translateY(-4px) rotate(-.4deg);box-shadow:0 10px 20px #ff9ec438}.feature:nth-child(6n+2){background:var(--kw-mint);border-color:var(--kw-mint-line)}.feature:nth-child(6n+3){background:var(--kw-lav);border-color:var(--kw-lav-line)}.feature:nth-child(6n+4){background:var(--kw-sky);border-color:var(--kw-sky-line)}.feature:nth-child(6n+5){background:var(--kw-peach);border-color:var(--kw-peach-line)}.feature-icon{display:inline-flex;align-items:center;justify-content:center;width:52px;height:52px;margin-bottom:var(--space-3);font-size:1.6rem;border-radius:50%;background:#fff;box-shadow:0 3px #0000000d}.feature h3{margin:0 0 var(--space-2);font-size:var(--fs-h2);font-family:var(--kw-round);font-weight:400;color:#6b4f5b}.feature p{margin:0;color:var(--kw-ink);line-height:1.65;font-size:var(--fs-body)}.pricing-panel{position:relative;overflow:hidden;text-align:center;background:linear-gradient(180deg,#ffb0d3,#ff8fc0);border-radius:28px;padding:var(--space-8) var(--space-5);color:#fff;box-shadow:0 12px 26px #ff8abb59}.pricing-panel h2{margin:0 0 var(--space-3);font-size:var(--fs-h1);font-family:var(--kw-round);font-weight:400;color:#fff}.pricing-panel p{margin:0 auto var(--space-5);max-width:440px;opacity:.96}.pricing-panel button.light{font-family:var(--kw-round);font-weight:400;padding:11px 28px;border-radius:var(--radius-pill);background:#fff;color:var(--kw-pink-deep);border:none;box-shadow:0 4px #0000001f}.pricing-panel button.light:hover:not(:disabled){background:#fff4f9;transform:translateY(-2px)}.landing-footer{text-align:center;padding:var(--space-5) 0 0;border-top:2px dashed var(--kw-line);color:var(--kw-ink);font-size:var(--fs-small);font-family:var(--kw-round)}.profile-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:var(--space-5);margin-bottom:var(--space-6)}.profile-grid .card h3{margin:0 0 var(--space-2)}.profile-grid .card{padding:var(--space-5)}.util-bar{display:inline-block;vertical-align:middle;width:90px;height:8px;border-radius:4px;background:var(--color-bg-soft);border:1px solid var(--color-line);overflow:hidden}.util-bar>span{display:block;height:100%;background:var(--color-accent)}
