/* SolidStart English — page-wide visual styling based on its existing site.
   This stylesheet is complete for the standalone prototype; Payhip CSS is unchanged. */
@import url('https://fonts.googleapis.com/css2?family=Nunito:wght@400;500;600;700;800;900&family=League+Spartan:wght@400;500;600;700;800&display=swap');
:root{--navy:#0e2745;--navy2:#164169;--blue:#116bb2;--teal:#197eac;--teal-dark:#105b84;--ink:#15293e;--muted:#66788c;--bg:#ffffff;--line:#dfe8f1;--sky:#edf6fe;--soft:#eff8ff;--shadow:0 6px 20px rgba(19,69,118,.045);--round:14px}
html,body{background:#fff;color:var(--ink)}
.app-shell{display:block;min-height:100vh}
.sidebar{width:100%;background:#fff;color:#233c57;padding:11px 22px 0;display:flex;flex-direction:column;align-items:center;box-shadow:none;position:relative;z-index:2}
.brand{padding:0 12px 3px;display:block;margin:0;text-align:center}
.brand img{width:174px;height:119px;object-fit:contain;display:block;margin:auto}
.logo-mark,.brand strong,.brand small,.side-section-label,.sidebar-bottom{display:none!important}
.view-switch{position:absolute;right:max(30px,calc((100vw - 1370px)/2));top:48px;display:flex;grid-template-columns:none;gap:2px;background:#eff6fd;border:1px solid #dceafa;border-radius:30px;padding:3px}
.view-opt{font-size:11px;padding:8px 13px;border-radius:30px;color:#496a87}
.view-opt.selected{color:#fff;background:#136ab3;box-shadow:0 2px 7px #0d629f20}
.side-nav{padding:0;display:flex;flex-wrap:wrap;justify-content:center;gap:8px;min-height:49px;align-items:center}
.nav-item{width:auto;color:#49647f;border-radius:0;padding:12px 14px 11px;font-size:13px;font-weight:800;border-bottom:3px solid transparent;gap:8px}
.nav-item svg{width:16px;height:16px}.nav-item:hover{background:#f4f9ff;color:#116bb2}
.nav-item.active{background:transparent;color:#126baf;border-bottom:3px solid #1679c4;box-shadow:none}
.workspace{width:100%;background:#fff}
.topbar{height:48px;border-top:1px solid #e8edf3;border-bottom:1px solid #e8edf3;background:#f9fbfe;padding:0 max(26px,calc((100vw - 1370px)/2));}
.breadcrumb{font-size:11px}.topbar-right{gap:12px}.demo-pill{border:1px solid #dbeaf8;color:#4a7391;background:#ecf6ff;font-size:10px}.demo-dot{background:#2586cf}.avatar{width:29px;height:29px;border-radius:50%;background:#e1f0ff;color:#15629d}
#main{max-width:1340px;padding:42px 28px 75px}
.page-header{border-bottom:1px solid #e6edf5;padding-bottom:23px;margin-bottom:23px}
.page-header h1{font-family:'League Spartan','Nunito',sans-serif;font-size:38px;letter-spacing:-.7px;color:#143252}
.page-header p{font-size:14px;color:#5b7188}
.eyebrow{color:#1373b5;font-size:11px}
.stat,.panel{box-shadow:var(--shadow);border:1px solid #dfe8f0;background:#fff;border-radius:13px}
.stat{padding:21px 23px}.stat-label{color:#6b7b8d}.stat-number{color:#0e5996}.stat-number.blue{color:#106bb3}.stat-number.teal{color:#167db7}
.panel h2{font-size:23px;color:#143a5d}
.head-stripe{background:linear-gradient(90deg,#1169b1,#42baf1)}
.notice{background:#edf7ff;color:#49667c;border:1px solid #cde5f8;border-radius:12px}
.notice strong{color:#125b8e}.notice svg{stroke:#1676b5}
.pill.teal{background:#e8f5fe;color:#146ba3}.pill.blue{background:#eaf4ff;color:#1467ab}
.package-card{background:#f4f9ff;border:1px solid #dfedfb}
.progress-fill{background:linear-gradient(90deg,#1570b7,#43b8ed)}
.month-nav{box-shadow:none}.month-nav strong{color:#2a4e6c}.month-nav button{color:#285d8e}
.primary-btn{background:#136fb4!important}.primary-btn:hover{background:#0b5897!important}
.secondary-btn{color:#195f95!important;border-color:#c8dceb!important}
.nav-item:focus-visible,.view-opt:focus-visible{outline-offset:3px}
/* Homework and invoice modules */
.portal-subnav{display:flex;gap:8px;flex-wrap:wrap;justify-content:space-between;align-items:center;margin-bottom:18px}
.portal-intro{max-width:680px}.portal-intro p{line-height:1.6}
.feature-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(300px,.9fr);gap:20px;align-items:start}
.feature-panel{background:#fff;border:1px solid #dce8f3;border-radius:14px;box-shadow:var(--shadow);padding:23px}
.feature-panel h2{font:700 23px/1.2 'League Spartan','Nunito',sans-serif;margin:0 0 6px;color:#164067}
.feature-panel h3{font-size:14px;margin:0 0 7px;color:#173b60}
.feature-panel p{color:#687d90;font-size:13px;line-height:1.6;margin:0 0 17px}
.feature-panel label:not(.upload-label){display:block;font-weight:800;font-size:12px;color:#416078;margin:15px 0 5px}
.feature-panel select,.feature-panel input:not([type=file]),.feature-panel textarea{width:100%;border:1px solid #ccdeec;border-radius:10px;padding:11px;background:#fff;color:#213b53;font-size:14px}
.feature-panel textarea{resize:vertical;min-height:94px;font:inherit}
.upload-zone{display:block;background:#f6fbff;border:2px dashed #b4d6ee;border-radius:14px;padding:27px 19px;text-align:center;cursor:pointer;transition:background .2s,border-color .2s}
.upload-zone:hover,.upload-zone:focus-within{background:#ebf6ff;border-color:#187bc1}
.upload-zone .upload-glyph{font-size:28px;line-height:1;margin:0 0 9px;color:#1a73b7}
.upload-zone strong{color:#164f7d;display:block;font-size:14px}
.upload-zone small{font-size:11px;color:#778ca0;display:block;margin-top:6px}
.upload-zone input{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}
.upload-selected{display:grid;gap:7px;margin-top:12px}
.upload-selected:empty{display:none}
.file-chip{border:1px solid #e0e9f3;background:#fbfdff;border-radius:9px;padding:9px 11px;display:flex;align-items:center;justify-content:space-between;gap:9px;font-size:12px;color:#325374}
.file-chip strong{overflow-wrap:anywhere}.file-chip small{color:#788ca1}
.feature-actions{display:flex;gap:9px;margin-top:17px;align-items:center;flex-wrap:wrap}
.feature-actions button,.feature-actions a,.file-action{padding:11px 16px;border-radius:10px;border:1px solid #d1e1ec;background:#fff;color:#22659a;font-size:12px;font-weight:900;text-decoration:none;display:inline-flex;align-items:center;justify-content:center;gap:7px;cursor:pointer}
.feature-actions .accent-btn{background:#1471b9;border-color:#1471b9;color:#fff}
.feature-actions .accent-btn:hover{background:#0b5c98}
.portal-note{background:#edf7ff;color:#355d7c;border:1px solid #cfe6f7;border-radius:10px;padding:12px 14px;font-size:12px;line-height:1.5;margin-bottom:18px}
.portal-note strong{color:#164c78}
.status-list{display:grid;gap:12px}
.submission-card{border:1px solid #dce7f1;border-radius:12px;padding:15px 16px;background:#fff}
.submission-head{display:flex;align-items:flex-start;justify-content:space-between;gap:13px;margin-bottom:8px}
.submission-head strong{color:#1a3d5c;font-size:13px;display:block}.submission-head small{display:block;color:#7d8da0;font-size:11px;margin-top:3px}
.submission-note{font-size:12px;color:#576e84;margin:7px 0 8px;white-space:pre-wrap;overflow-wrap:anywhere}
.file-row{display:flex;align-items:center;justify-content:space-between;gap:9px;padding:7px 0;border-top:1px solid #edf2f7;font-size:12px}
.file-row span{overflow-wrap:anywhere}.file-row a{color:#1368a7;text-decoration:underline;text-underline-offset:2px}
.file-row a:hover{color:#0c4f84}
.file-row img{max-width:100px;max-height:65px;object-fit:contain;border:1px solid #dce7ee;border-radius:5px}
.file-row .file-meta{display:flex;align-items:center;gap:10px;min-width:0}
.file-row .file-icon{width:33px;height:33px;display:grid;place-items:center;background:#e8f3fc;color:#176ea8;font-weight:900;border-radius:7px;flex-shrink:0}
.submission-foot{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;margin-top:12px}
.submission-foot button{border:1px solid #cbdfea;color:#205f96;background:#f6fbff;border-radius:8px;font:800 11px Nunito,sans-serif;padding:8px 11px}
.filter-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:8px 0 16px}.filter-row label{margin:0!important}
.filter-row select{max-width:190px}
.form-error{color:#ac3d38;font-weight:700;font-size:12px;margin-top:8px}
.empty-feature{text-align:center;border:1px dashed #cfdfeb;background:#fbfdff;border-radius:11px;padding:30px 18px;color:#7790a3;font-size:13px}
.empty-feature strong{display:block;color:#415e76;margin-bottom:5px}
.task-badge{display:inline-block;border-radius:25px;padding:5px 10px;font-size:11px;font-weight:900;background:#e7f3fe;color:#1368a5}
.task-badge.pending{background:#fff4df;color:#986a26}.task-badge.reviewed{background:#e7f7ef;color:#237a59}.task-badge.paid{background:#e7f7ef;color:#237a59}
.parent-file-summary{display:flex;justify-content:space-between;gap:10px;align-items:center;border-radius:11px;background:#f4f9ff;border:1px solid #e0edfa;padding:11px 12px;margin:12px 0}
.portal-two-row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:15px;margin-bottom:18px}
.portal-two-row .stat{padding:16px}
.footer-brand{text-align:center;padding:20px;color:#8aa0b3;font-size:11px;border-top:1px solid #edf2f7}
@media(max-width:850px){.feature-grid{grid-template-columns:1fr}.view-switch{top:35px;right:17px}.brand img{width:140px;height:105px}.side-nav{padding-top:7px}.nav-item{padding:11px 8px;font-size:12px}#main{padding:27px 17px 45px}.page-header h1{font-size:32px}.topbar{padding:0 17px}}
@media(max-width:550px){.sidebar{padding:14px 10px 0}.brand img{width:145px;height:110px}.view-switch{position:static;margin:0 auto 10px;order:2}.side-nav{order:1;gap:0;min-height:43px}.nav-item{padding:10px 8px;font-size:11px;gap:4px}.nav-item svg{width:14px;height:14px}.topbar{height:42px}.demo-pill{font-size:9px;padding:5px 8px}.topbar-right{gap:6px}.breadcrumb{font-size:10px;gap:5px}.avatar{display:none}.feature-panel{padding:16px}.file-row{align-items:flex-start}.submission-head{align-items:center}.footer-brand{padding:14px}.portal-two-row{grid-template-columns:1fr}}

/* V3 custom-calendar details */
.slot-hint{font-size:11px;color:#758da3;margin-top:10px;line-height:1.45}
.hours-table{display:grid;gap:0;border:1px solid #e2ecf5;border-radius:11px;overflow:hidden}
.hours-table>div{display:flex;align-items:center;gap:17px;border-bottom:1px solid #e2ecf5;padding:10px 13px;font-size:12px}.hours-table>div:last-child{border-bottom:0}
.hours-table strong{min-width:34px;color:#1c527e}.hours-table span{color:#54748d;font-weight:700}
.slot-btn:disabled{opacity:.52;cursor:not-allowed}
