/* The app starts with access. Product pages live on the public website. */
#landing .landing-nav{gap:24px}
#landing .landing-nav .tv-marketing-link{margin-left:auto;display:flex;align-items:center;gap:8px;text-decoration:none;color:#514944;font:650 14px/1.4 system-ui,sans-serif}
#landing .landing-nav .tv-entry-help{display:block;border:0;background:transparent;box-shadow:none;color:#4d453e;padding:11px 5px;font:650 14px/1.4 system-ui,sans-serif;min-height:44px}
#landing .landing-nav>.secondary{background:#252126;color:#fff7df;border-color:#252126;min-height:46px;padding:12px 19px}
#landing .landing-nav .tv-marketing-link:hover,#landing .landing-nav .tv-entry-help:hover{color:#8b620b;text-decoration:underline;text-underline-offset:5px}
/* A calm, legible class library with one primary action. */
#hub{background:#f7f5ef;color:#2b2729}
#hub .hub{background:#f7f5ef;min-height:100vh}
#hub .hub-nav{height:auto;min-height:96px;max-width:none;padding:14px max(28px,calc((100vw - 1344px)/2));gap:24px;background:#fffdf8;border-bottom:1px solid #e5dfd3;color:#2b2729;display:flex;justify-content:space-between}
#hub .hub-nav .brand{gap:18px;min-width:0;margin:0}
#hub .hub-nav .brand img{object-fit:contain}
#hub .hub-nav .tv-hub-brand-label{display:block;border-left:1px solid #ddd4c5;padding-left:20px;font:650 13px/1.5 system-ui,sans-serif;letter-spacing:0;text-transform:none;color:#766a5e}
#hub .tv-hub-account{display:flex;align-items:center;gap:24px;min-width:0}
#hub .user-chip{display:flex;gap:11px;min-width:0;color:#2b2729}
#hub .user-chip .avatar{display:grid;place-items:center;background:#f0e6ce;color:#6f531c;border-radius:50%;width:40px;height:40px;flex:0 0 40px;font:750 13px system-ui,sans-serif}
#hub .user-chip>div:last-child{min-width:0}
#hub .user-chip b{display:block;font:700 14px/1.4 system-ui,sans-serif;max-width:230px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#332d29}
#hub .user-chip span{display:block;font:450 12px/1.5 system-ui,sans-serif;color:#746b60;max-width:230px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#hub .tv-hub-logout{padding:10px 16px;min-height:44px;flex-shrink:0;border:1px solid #dcd2c4;border-radius:10px;background:#fffdf8;color:#605247;font:650 13px/1.4 system-ui,sans-serif;cursor:pointer}
#hub .hub-main{width:min(1288px,calc(100% - 64px));padding:44px 0 48px;margin:auto}
#hub .welcome{padding:0 0 30px;border:0;border-radius:0;background:transparent;box-shadow:none;display:flex;align-items:center;justify-content:space-between;gap:28px}
#hub .eyebrow{color:#846018;font:750 10px/1.5 system-ui,sans-serif;letter-spacing:.13em}
#hub .welcome h1{font:650 clamp(29px,3.1vw,43px)/1.12 Georgia,serif;letter-spacing:-.025em;margin:12px 0;color:#302b28;max-width:850px}
#hub .welcome p{font:450 15px/1.7 system-ui,sans-serif;color:#70665c;margin:0;max-width:720px}
#hub [data-create-class]{border:1px solid #e8b318;background:#ffcc25;color:#302607;border-radius:12px;min-height:50px;padding:13px 21px;display:flex;align-items:center;justify-content:center;gap:10px;font:750 14px/1.4 system-ui,sans-serif;flex:0 0 auto;box-shadow:0 3px 0 #be94252b;cursor:pointer}
#hub [data-create-class]>span{font:500 23px/1 system-ui,sans-serif}
#hub .tv-hub-overview{display:flex;align-items:center;gap:0;border-top:1px solid #e3dbce;border-bottom:1px solid #e3dbce;padding:21px 0;margin-bottom:28px}
#hub .tv-hub-overview>div{display:flex;align-items:center;gap:9px;padding:0 27px;border-right:1px solid #e1d8c8}
#hub .tv-hub-overview>div:first-child{padding-left:0}
#hub .tv-hub-overview b{font:700 24px/1.1 Georgia,serif;color:#342e27;font-variant-numeric:tabular-nums}
#hub .tv-hub-overview span{font:500 13px/1.5 system-ui,sans-serif;color:#756758}
#hub .tv-hub-overview>p{margin:0 0 0 auto;max-width:300px;padding-left:28px;font:400 12px/1.65 system-ui,sans-serif;color:#776a5b}
#hub #tvHubResume{display:flex;align-items:center;justify-content:space-between;gap:25px;background:#28242a;color:#fff7e3;padding:26px 30px;border-radius:17px;margin-bottom:36px;position:relative;overflow:hidden;isolation:isolate}
#hub #tvHubResume[hidden]{display:none}
#hub #tvHubResume:after{content:'';position:absolute;z-index:-1;right:20%;top:-140px;width:330px;height:330px;border:1px solid #ffcc2526;border-radius:50%;box-shadow:0 0 0 28px #ffcc2505,0 0 0 56px #ffcc2505;pointer-events:none}
#hub #tvHubResume .eyebrow{color:#e8c976;font-size:9px}
#hub #tvHubResume h2{font:650 28px/1.15 Georgia,serif;color:#fff5d9;margin:10px 0 8px;overflow-wrap:anywhere}
#hub #tvHubResume p{font:400 13px/1.6 system-ui,sans-serif;color:#c9c0bb;margin:0}
#hub #tvHubResume button{display:flex;align-items:center;justify-content:space-between;gap:30px;background:#fff4cf;color:#352c20;border:0;border-radius:11px;min-height:48px;padding:13px 19px;font:750 14px/1.4 system-ui,sans-serif;flex:0 0 auto;cursor:pointer}
#hub #tvHubResume button>span{font-size:22px}
#hub .hub-title{display:flex;justify-content:space-between;align-items:end;gap:20px;margin:0 0 22px}
#hub .hub-title h2{font:650 30px/1.2 Georgia,serif;letter-spacing:-.02em;color:#332d29;margin:8px 0 0}
#hub .hub-title>span{font:500 13px/1.5 system-ui,sans-serif;color:#786b5c;flex-shrink:0}
#hub .tv-hub-filters{display:flex;align-items:end;gap:18px;margin-bottom:22px}
#hub .tv-hub-filters[hidden]{display:none}
#hub .tv-hub-filters label{display:flex;flex-direction:column;gap:8px}
#hub .tv-hub-filters label>span{font:700 12px/1.5 system-ui,sans-serif;color:#66584b}
#hub .tv-hub-search{flex:1}
#hub .tv-hub-sort{width:220px}
#hub .tv-hub-filters input,#hub .tv-hub-filters select{box-sizing:border-box;width:100%;min-height:48px;padding:13px 15px;border:1px solid #dcd2c4;border-radius:11px;background:#fffdf8;color:#39312c;font:450 14px/1.4 system-ui,sans-serif}
#hub .tv-hub-filters input::placeholder{color:#938577}
#hub .class-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px;max-width:none;margin:0}
#hub .class-grid:has(>.class-card:nth-child(2):last-child){grid-template-columns:repeat(2,minmax(0,1fr))}
#hub .class-grid:has(>.class-card:only-child){grid-template-columns:1fr}
#hub .class-grid>.class-card:only-child{display:grid;grid-template-columns:110px minmax(0,1fr) 210px;align-items:stretch}
#hub .class-card:only-child .tv-class-card-head{flex-direction:column;justify-content:center;text-align:center;padding:20px 14px;border:0;border-right:1px solid #e6ddcd}
#hub .class-card:only-child .tv-class-source{text-align:center}
#hub .class-card:only-child .tv-class-actions{display:flex;flex-direction:column;justify-content:center;padding:23px 22px 23px 8px}
#hub .class-card{display:flex;flex-direction:column;position:relative;min-width:0;min-height:0;margin:0;padding:0;border:1px solid #ded6ca;border-radius:16px;background:#fffdf8;box-shadow:0 4px 18px #40301b04;overflow:hidden;transition:border-color .15s,box-shadow .15s}
#hub .class-card:hover{border-color:#bdac8d;box-shadow:0 8px 22px #40301b09;transform:none}
#hub .tv-class-card-head{padding:19px 22px;display:flex;align-items:center;justify-content:space-between;gap:12px;border-bottom:1px solid #eee6d8;background:#f0e8d9}
#hub .class-card:nth-child(3n+2) .tv-class-card-head{background:#e9e6e3}
#hub .class-card:nth-child(3n+3) .tv-class-card-head{background:#f4eccd}
#hub .tv-class-monogram{display:grid;place-items:center;width:42px;height:42px;border:1px solid #cec0a3;border-radius:11px;background:#ffffff80;color:#6e5934;font:750 14px/1 system-ui,sans-serif}
#hub .tv-class-source{font:600 10px/1.5 system-ui,sans-serif;color:#726452;text-align:right}
#hub .tv-class-card-main{padding:22px 22px 0;flex:1;min-width:0}
#hub .class-card h3{font:650 25px/1.2 Georgia,serif;letter-spacing:-.015em;color:#352e29;margin:0 0 10px;overflow-wrap:anywhere}
#hub .class-card .tv-class-schedule{font:450 13px/1.6 system-ui,sans-serif;color:#817163;margin:0 0 22px;min-height:21px;overflow-wrap:anywhere}
#hub .class-data{display:flex;gap:22px;align-items:center;flex-wrap:wrap;margin:0 0 22px;padding:0}
#hub .class-data>span{display:flex;gap:6px;align-items:baseline;font:450 12px/1.5 system-ui,sans-serif;color:#847463}
#hub .class-data b{font:750 17px/1.3 system-ui,sans-serif;color:#42372e}
#hub .tv-hub-class-code{display:flex;align-items:center;gap:8px;border-top:1px solid #ece4d7;padding:13px 0}
#hub .tv-hub-class-code>span:first-child{font:500 11px/1.5 system-ui,sans-serif;color:#837564;margin-right:auto}
#hub .class-code{position:static;display:block;letter-spacing:.06em;background:none;color:#746245;border:0;padding:0;font:700 12px/1.4 ui-monospace,Consolas,monospace;white-space:normal;overflow-wrap:anywhere}
#hub [data-copy-class-code]{border:1px solid #ded2c0;border-radius:8px;background:#f7f2e9;color:#7a6547;min-width:36px;min-height:36px;padding:5px;font-size:18px;cursor:pointer}
#hub [data-copy-class-code][data-copied]{background:#e3efd9;color:#345526}
#hub .class-card .tv-class-actions{display:grid;grid-template-columns:1fr auto;gap:9px;margin:0;padding:3px 22px 21px;position:static}
#hub .class-card .tv-class-actions .enter-class{position:static;display:flex;align-items:center;justify-content:space-between;gap:15px;background:#2e292c;color:#fff9e9;border:1px solid #2e292c;border-radius:10px;min-height:45px;padding:11px 15px;font:650 13px/1.4 system-ui,sans-serif;cursor:pointer}
#hub .class-card .tv-class-actions .enter-class>span{font-size:19px}
#hub .class-card .tv-class-actions .tv-edit-class{min-width:55px;min-height:45px;background:#fffdf8;color:#74624e;border:1px solid #dcd1be;border-radius:10px;padding:10px 13px;font:650 12px/1.4 system-ui,sans-serif;cursor:pointer}
#hub .hub-tools{display:grid;grid-template-columns:1fr 1fr 1fr;align-items:center;gap:22px;margin:38px 0 0;padding:26px 0 0;border:0;border-top:1px solid #e2d9c9;background:transparent;box-shadow:none;border-radius:0}
#hub .tv-hub-tools-intro h2{font:650 22px/1.3 Georgia,serif;color:#494033;margin:0 0 6px}
#hub .tv-hub-tools-intro p{font:400 13px/1.6 system-ui,sans-serif;color:#8b7965;max-width:300px;margin:0}
#hub .hub-tools .tool-button{display:flex;align-items:center;justify-content:space-between;gap:13px;padding:17px;border:1px solid #dfd6c7;border-radius:12px;background:#faf8f2;min-height:86px;text-align:left;cursor:pointer}
#hub .hub-tools .tool-button>i{display:grid;place-items:center;width:37px;height:37px;flex:0 0 37px;border:1px solid #e0d6c5;border-radius:10px;background:#fffdf8;color:#7a684c;font:750 21px/1 system-ui,sans-serif}
#hub .hub-tools .tool-button>span:not(:last-child){flex:1;min-width:0}
#hub .hub-tools .tool-button b{display:block;font:700 13px/1.5 system-ui,sans-serif;color:#62513d}
#hub .hub-tools .tool-button small{display:block;margin-top:3px;font:450 11px/1.6 system-ui,sans-serif;color:#907e69}
#hub .hub-tools .tool-button>span:last-child{font-size:20px;color:#9d8969}
#hub .tool-button:disabled{cursor:not-allowed;opacity:.6}
#hub .hub-tools [hidden]{display:none!important}
#hub .tv-empty-classes{grid-column:1/-1;text-align:center;display:flex;flex-direction:column;align-items:center;padding:45px 25px;border:1px dashed #cfc0a4;border-radius:17px;background:#fffdf8;max-width:none}
#hub .tv-empty-classes .tv-empty-book{display:grid;place-items:center;background:#f8e6a1;color:#805e1d;width:68px;height:68px;border-radius:18px;font:500 32px system-ui,sans-serif;margin:0 0 22px}
#hub .tv-empty-classes h3{font:650 32px/1.2 Georgia,serif;color:#42362b;margin:12px 0}
#hub .tv-empty-classes p{font:400 15px/1.8 system-ui,sans-serif;max-width:530px;color:#85725e;margin:0 0 22px}
#hub .tv-empty-classes button{display:flex;align-items:center;gap:20px;min-height:48px;padding:12px 19px;background:#ffcc25;color:#44340c;border:1px solid #d9ab22;border-radius:11px;font:700 14px/1.4 system-ui,sans-serif;cursor:pointer}
#hub .tv-empty-classes small{font:400 12px/1.6 system-ui,sans-serif;margin-top:18px;color:#907f68}
#hub .tv-hub-no-results{grid-column:1/-1;padding:45px 25px;border:1px dashed #d5c8b4;border-radius:15px;text-align:center;background:#fffdf8}
#hub .tv-hub-no-results h3{font:650 25px Georgia,serif;margin:0 0 12px}
#hub .tv-hub-no-results p{font:400 14px/1.6 system-ui,sans-serif;color:#81705e}
#hub .tv-hub-no-results button{min-height:44px;background:#2b272a;color:#fff6de;border:0;border-radius:9px;padding:10px 20px;font:650 13px system-ui,sans-serif;cursor:pointer}
/* Reuse the real create/edit actions, with readable fields and keyboard access. */
#createModal .create-box{width:min(500px,calc(100vw - 32px));box-sizing:border-box;padding:32px;background:#fffdf7;border-radius:20px;color:#342c25}
#createModal .create-box h2{font:650 32px/1.2 Georgia,serif;margin:12px 0}
#createModal .create-box>p{font:400 14px/1.75 system-ui,sans-serif;color:#84715c;margin:0 0 25px}
#createModal .create-box>label{font:700 13px/1.5 system-ui,sans-serif;color:#776248;margin:18px 0 8px;display:block}
#createModal .tv-optional{font-weight:400;color:#9c886c;margin-left:5px}
#createModal .create-box>input{box-sizing:border-box;width:100%;border:1px solid #daccb5;border-radius:10px;background:white;min-height:48px;padding:12px 14px;font:450 15px/1.4 system-ui,sans-serif;color:#433524}
#createModal .modal-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:28px}
#createModal .modal-actions button{min-height:44px;font:700 13px/1.4 system-ui,sans-serif;padding:11px 15px;border-radius:9px;cursor:pointer}
/* Login help is a real dialog, not another jump down the page. */
.tv-access-help{width:min(610px,calc(100vw - 32px));max-height:calc(100dvh - 40px);padding:0;border:1px solid #dccfb8;border-radius:20px;background:#fffdf7;color:#392e21;box-shadow:0 25px 90px #14101450;overflow:auto}
.tv-access-help::backdrop{background:#1c191cc9;backdrop-filter:blur(4px)}
.tv-access-help>header{display:flex;justify-content:space-between;align-items:start;gap:20px;padding:27px 29px;border-bottom:1px solid #e7ddce}
.tv-access-help .eyebrow{font:750 10px/1.5 system-ui,sans-serif;color:#946e21;letter-spacing:.1em}
.tv-access-help h2{font:650 30px/1.2 Georgia,serif;margin:10px 0 0;color:#403122}
.tv-access-help>header button{width:40px;height:40px;background:#f3eddf;color:#705c41;border:1px solid #ded0b9;border-radius:10px;font:500 24px system-ui,sans-serif;cursor:pointer}
.tv-access-help-body{padding:27px 29px 12px}
.tv-access-help article{display:flex;gap:17px;margin-bottom:23px}
.tv-access-help article>span{flex:0 0 33px;color:#b79a5f;font:600 16px/1.5 Georgia,serif;padding-top:3px}
.tv-access-help h3{font:750 15px/1.5 system-ui,sans-serif;margin:0 0 7px;color:#5c4528}
.tv-access-help article p,.tv-access-help-note{font:400 14px/1.75 system-ui,sans-serif;color:#887258;margin:0}
.tv-access-help-note{padding:15px 17px;background:#f5efdf;border-radius:10px;margin-bottom:10px;color:#816639}
.tv-access-help>footer{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:21px 29px;border-top:1px solid #e7ddce}
.tv-access-help>footer a{font:650 12px/1.5 system-ui,sans-serif;color:#80632e;text-decoration:underline;text-underline-offset:4px}
.tv-access-help>footer button{min-height:44px;padding:11px 21px;font:750 14px/1.5 system-ui,sans-serif;color:#3d2d0f;background:#ffcc25;border:1px solid #d5a624;border-radius:10px;cursor:pointer}
@media(min-width:1700px){#hub .hub-main{padding-top:52px}}
@media(max-width:1080px){#hub .class-grid{grid-template-columns:repeat(2,minmax(0,1fr))}#hub .hub-tools{grid-template-columns:1fr 1fr}#hub .tv-hub-tools-intro{grid-column:1/-1}#hub .tv-hub-overview>p{display:none}#hub .tv-hub-overview>div{flex:1;justify-content:center;padding:0 17px}#hub .tv-hub-overview>div:last-of-type{border-right:0}#hub .hub-nav .tv-hub-brand-label{display:none}}
@media(max-width:720px){#landing .landing-nav .tv-marketing-link{margin-left:auto;font-size:12px;display:flex}#landing .landing-nav .tv-entry-help{font-size:12px}#landing .landing-nav>.secondary{display:none}#landing .landing-nav{gap:14px;flex-wrap:nowrap}#landing .landing-nav .brand img{width:110px!important;height:60px!important}#hub .hub-nav{min-height:80px;padding:9px 20px;gap:16px}#hub .hub-nav .brand img{width:116px!important;height:62px!important}#hub .tv-hub-account{gap:14px}#hub .user-chip>div:last-child{display:none}#hub .tv-hub-logout{font-size:12px;padding:9px 12px}#hub .hub-main{width:calc(100% - 40px);padding:28px 0 35px}#hub .welcome{align-items:start;flex-direction:column;gap:20px;padding-bottom:25px}#hub .welcome h1{font-size:32px}#hub .welcome p{font-size:14px}#hub [data-create-class]{width:100%}#hub .tv-hub-overview{padding:17px 0;margin-bottom:23px}#hub .tv-hub-overview>div{flex-direction:column;gap:5px;padding:0 9px}#hub .tv-hub-overview b{font-size:23px}#hub .tv-hub-overview span{font-size:11px}#hub #tvHubResume{padding:23px;align-items:stretch;flex-direction:column;gap:22px;margin-bottom:29px}#hub #tvHubResume h2{font-size:26px}#hub #tvHubResume button{width:100%}#hub .hub-title{align-items:start;margin-bottom:20px}#hub .hub-title h2{font-size:28px}#hub .hub-title>span{font-size:11px;padding-top:27px}#hub .tv-hub-filters{align-items:stretch;flex-direction:column;gap:15px}#hub .tv-hub-sort{width:100%}#hub .class-grid{grid-template-columns:1fr;gap:17px}#hub .hub-tools{grid-template-columns:1fr;margin-top:28px;padding-top:24px;gap:15px}#hub .tv-hub-tools-intro{margin-bottom:2px}#hub .tv-empty-classes{padding:30px 22px}#hub .tv-empty-classes h3{font-size:28px}#hub .tv-empty-classes p{font-size:14px}#createModal .create-box{padding:25px}#createModal .modal-actions{gap:8px}#createModal .modal-actions button{flex:1}.tv-access-help>header,.tv-access-help-body{padding:23px}.tv-access-help>footer{padding:19px 23px}.tv-access-help h2{font-size:27px}}
@media(max-width:370px){#hub .user-chip{display:none}#landing .landing-nav{gap:10px}#landing .landing-nav .brand img{width:91px!important}#landing .landing-nav .tv-marketing-link{font-size:11px}#landing .landing-nav .tv-entry-help{font-size:11px}}
@media(max-width:720px){#hub .class-grid:has(>.class-card:nth-child(2):last-child){grid-template-columns:1fr}#hub .class-grid>.class-card:only-child{display:flex;flex-direction:column}#hub .class-card:only-child .tv-class-card-head{flex-direction:row;justify-content:space-between;border:0;border-bottom:1px solid #eee6d8;padding:19px 22px}#hub .class-card:only-child .tv-class-source{text-align:right}#hub .class-card:only-child .tv-class-actions{display:grid;grid-template-columns:1fr auto;padding:3px 22px 21px}}
@media(prefers-reduced-motion:reduce){#hub *{transition:none!important;scroll-behavior:auto}}
