:root{--vinci-lavender:#dbcdff;--vinci-cyan:#46c2ff;--vinci-violet:#402ffa;--vinci-blue:#4382e9;--vinci-slate:#334669;--background:#f8f9fc;--foreground:var(--vinci-slate);--muted:#5c6478;--border:#e4e8f0;--accent:var(--vinci-violet);--accent-hover:#3526d4;--accent-subtle:#f3f0ff;--accent-focus:rgb(64 47 250/12%)}*{box-sizing:border-box;margin:0;padding:0}body,html{max-width:100vw;min-height:100vh}body{background:var(--background);color:var(--foreground);font-family:var(--font-figtree),system-ui,-apple-system,"Segoe UI",sans-serif;line-height:1.5}.font-product-zh{font-family:var(--font-noto-sans-tc),var(--font-figtree),sans-serif}a{color:var(--accent)}main{margin:0 auto;max-width:48rem;padding:2rem 1.25rem}header{border-bottom:1px solid var(--border);margin-bottom:2rem;padding-bottom:1rem}header h1{font-size:1.25rem;font-weight:600}header p{color:var(--muted);font-size:.875rem;margin-top:.25rem}.card{background:#fff;border:1px solid var(--border);border-radius:8px;padding:1.25rem}.card h2{font-size:1rem;font-weight:600;margin-bottom:.75rem}.card ul{color:var(--muted);font-size:.875rem;list-style:none}.card li+li{margin-top:.35rem}.status-ok{color:#15803d;font-weight:500}.loading,.status-pending{color:var(--muted)}.loading{padding:2rem 1.25rem}.meta-list{color:var(--muted);font-size:.875rem;list-style:none;margin-top:.75rem}.meta-list li+li{margin-top:.35rem}.button-row{gap:.5rem;margin-top:1rem}.button-row,.filter-row{display:flex;flex-wrap:wrap}.filter-row{gap:1rem;margin:1rem 0}.filter-row label{display:flex;flex-direction:column;font-size:.8125rem;font-weight:500;gap:.3rem;min-width:10rem}.filter-row input,.filter-row select{border:1px solid var(--border);border-radius:6px;font:inherit;padding:.45rem .55rem}.table-note{color:var(--muted);font-size:.75rem}.btn{border:1px solid transparent;border-radius:6px;cursor:pointer;display:inline-block;font-size:.875rem;font-weight:500;padding:.5rem .9rem;text-decoration:none}.btn-primary{background:var(--accent);color:#fff}.btn-primary:hover{background:var(--accent-hover)}.btn-secondary{background:#fff;border-color:var(--border);color:var(--foreground)}.btn-secondary:hover{background:#f3f4f6}.btn-danger{border-color:#fecaca;color:#b91c1c}.btn-danger:hover{background:#fef2f2}.btn:disabled{cursor:not-allowed;opacity:.7}.auth-card{margin-top:.5rem}.btn-google{background:#fff;border-color:var(--border);color:var(--foreground);width:100%}.btn-google:hover:not(:disabled){background:#f3f4f6}.auth-divider{align-items:center;color:var(--muted);display:flex;font-size:.8125rem;gap:.75rem;margin:1rem 0}.auth-divider:after,.auth-divider:before{background:var(--border);content:"";flex:1 1;height:1px}.auth-form{gap:.9rem}.auth-form,.auth-form label{display:flex;flex-direction:column}.auth-form label{font-size:.875rem;font-weight:500;gap:.35rem}.auth-form input{border:1px solid var(--border);border-radius:6px;font:inherit;padding:.55rem .65rem}.form-error{color:#b91c1c;font-size:.875rem}.form-success{color:#15803d;font-size:.875rem;margin-bottom:.75rem}.form-hint{color:var(--muted);font-size:.8125rem;margin-top:1rem}.form-hint-auth-lead{margin-bottom:.75rem;margin-top:0}.back-link{font-size:.875rem;margin-top:1rem}.portal-header{align-items:flex-start;border-bottom:1px solid var(--border);display:flex;flex-wrap:wrap;gap:1rem;justify-content:space-between;margin-bottom:1.5rem;padding:1.25rem 1.25rem 1rem}.portal-header h1{font-size:1.125rem;font-weight:600}.portal-header p{color:var(--muted);font-size:.875rem;margin-top:.2rem}.portal-header-actions{align-items:center;display:flex;flex-wrap:wrap;gap:.75rem}.portal-user{color:var(--muted);font-size:.8125rem}.portal-nav{display:flex;gap:1rem;margin-bottom:1rem}.portal-nav a{border-radius:4px;font-size:.875rem;font-weight:500;text-decoration:none}.portal-nav a:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.portal-nav a.is-active{color:var(--accent);font-weight:600}.portal-nav a.is-active:after{background:var(--accent);border-radius:1px;content:"";display:block;height:2px;margin-top:.2rem}.portal-nav-grouped{align-items:flex-start;flex-wrap:wrap;gap:1.25rem 2rem}.portal-nav-group{display:flex;flex-direction:column;gap:.35rem}.portal-nav-group-label{color:var(--muted);font-size:.6875rem;font-weight:600;letter-spacing:.06em;text-transform:uppercase}.portal-nav-group-links{display:flex;flex-wrap:wrap;gap:.75rem 1rem}.public-page-title{color:var(--foreground);font-size:1.25rem;font-weight:600}.card-muted{background:rgb(219 205 255/12%);border-color:rgb(219 205 255/45%)}.stat-grid{display:grid;grid-gap:.75rem;gap:.75rem;grid-template-columns:repeat(auto-fit,minmax(8.5rem,1fr));margin:0}.stat-card{background:var(--background);border:1px solid var(--border);border-radius:8px;display:flex;flex-direction:column;gap:.2rem;padding:.85rem 1rem}.stat-card dt{color:var(--muted);font-size:.6875rem;font-weight:600;letter-spacing:.04em;margin:0;text-transform:uppercase}.stat-card dd{font-size:1.5rem;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;font-weight:600;line-height:1.2;margin:0}.stat-card-link{font-size:.8125rem;font-weight:500;margin-top:.25rem}.stat-card-pending{border-color:#fde68a}.stat-card-approved{border-color:#bbf7d0}.stat-card-rejected{border-color:#fecaca}.stat-card-expiring{border-color:rgb(70 194 255/45%)}.empty-state{align-items:flex-start;background:var(--background);border:1px dashed var(--border);border-radius:8px;display:flex;flex-direction:column;gap:.75rem;margin-top:.5rem;padding:1.25rem}.empty-state p{color:var(--muted);margin:0}.empty-state-hint{color:var(--muted);font-size:.8125rem;line-height:1.45}.table-section{margin-top:1rem}.card-header-row+.deal-form,.card-header-row+.empty-state,.card-header-row+.form-error,.card-header-row+.resource-form,.card-header-row+.resource-list,.card-header-row+.sku-form,.card-header-row+.status-pending,.card-header-row+.table-wrap{margin-top:.75rem}.badge-inline{margin-left:.5rem;vertical-align:middle}h2 .badge-inline{position:relative;top:-.1rem}main.portal-main-wide{max-width:72rem}.vinci-logo{display:block;height:auto;max-width:100%}.portal-header-brand{align-items:center;display:flex;gap:.85rem}.login-page{background:linear-gradient(180deg,rgb(219 205 255/35%) 0,var(--background) 12rem);min-height:100vh}.login-header{align-items:center;border-bottom:1px solid var(--border);display:flex;flex-direction:column;gap:.75rem;margin:0 auto;max-width:48rem;padding:2rem 1.25rem 1rem;text-align:center}.login-header p{color:var(--muted);font-size:.875rem;max-width:28rem}.auth-form input:focus-visible,.data-table input:focus-visible,.deal-form input:focus-visible,.deal-form select:focus-visible,.deal-form textarea:focus-visible,.filter-row input:focus-visible,.filter-row select:focus-visible,.school-combobox input:focus-visible,.sku-form input:focus-visible{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-focus);outline:none}.btn-danger:focus-visible,.btn-google:focus-visible,.btn-primary:focus-visible,.btn-secondary:focus-visible{outline:2px solid var(--accent);outline-offset:2px}main .card+.card{margin-top:1rem}.card-lead{color:var(--muted);font-size:.875rem;margin-bottom:1rem}.section-title{font-size:.9375rem;font-weight:600;margin-bottom:.75rem}.sku-form-row{align-items:end;display:grid;grid-gap:.75rem;gap:.75rem;grid-template-columns:1fr}@media (min-width:640px){.sku-form-row{grid-template-columns:2fr 1fr 1fr auto}}.data-table input,.sku-form label{display:flex;flex-direction:column;font-size:.8125rem;font-weight:500;gap:.3rem}.data-table input,.sku-form input{border:1px solid var(--border);border-radius:6px;font:inherit;padding:.45rem .55rem}.table-wrap{overflow-x:auto}.data-table{border-collapse:collapse;font-size:.875rem;width:100%}.data-table td,.data-table th{border-bottom:1px solid var(--border);padding:.65rem .5rem;text-align:left;vertical-align:middle}.data-table th{font-size:.75rem;font-weight:600;text-transform:uppercase}.data-table th,.row-inactive td{color:var(--muted)}.table-actions{display:flex;flex-wrap:wrap;gap:.35rem}.badge{border-radius:999px;display:inline-block;font-size:.75rem;font-weight:500;padding:.15rem .55rem}.badge-active{background:#dcfce7;color:#166534}.badge-inactive{background:#f3f4f6;color:var(--muted)}.badge-pending{background:#fef9c3;color:#854d0e}.badge-approved{background:#dcfce7;color:#166534}.badge-rejected{background:#fee2e2;color:#991b1b}.card-header-row{align-items:center;display:flex;flex-wrap:wrap;gap:.75rem;justify-content:space-between;margin-bottom:.5rem}.school-list{list-style:none;margin-top:.75rem;max-height:16rem;overflow-y:auto}.school-list li{border-bottom:1px solid var(--border);display:flex;flex-wrap:wrap;gap:.35rem .75rem;justify-content:space-between;padding:.5rem 0}.school-list li:last-child{border-bottom:none}.school-name{font-size:.875rem;font-weight:500}.school-id{color:var(--muted);font-size:.75rem}.deal-form{gap:.9rem}.deal-form,.deal-form label{display:flex;flex-direction:column}.deal-form label{font-size:.875rem;font-weight:500;gap:.35rem}.deal-form label.checkbox-label{align-items:flex-start;flex-direction:row;font-weight:400;max-width:36rem}.deal-form-compact{max-width:36rem}.deal-form-compact input[type=number]{max-width:6rem}.deal-form input,.deal-form select,.deal-form textarea{border:1px solid var(--border);border-radius:6px;font:inherit;padding:.55rem .65rem}.card-lead-secondary{margin-top:-.5rem}.form-readonly-group{background:#f8f9fb;border:1px solid var(--border);border-radius:6px;display:grid;grid-gap:.75rem;gap:.75rem;padding:.85rem}.form-readonly-field{display:flex;flex-direction:column;gap:.25rem}.form-readonly-label{color:var(--muted);font-size:.8125rem;font-weight:500}.form-readonly-value{font-size:.875rem}.form-field-block{display:flex;flex-direction:column;gap:.35rem}.form-field-label{font-size:.875rem;font-weight:500}.form-hint-inline{color:var(--muted);font-size:.8125rem}.file-list{list-style:none;margin-top:.35rem}.file-list li{align-items:center;border-bottom:1px solid var(--border);display:flex;font-size:.8125rem;gap:.75rem;justify-content:space-between;padding:.45rem 0}.file-list li:last-child{border-bottom:none}.btn-small{font-size:.75rem;padding:.3rem .55rem}.checkbox-label{align-items:flex-start;display:flex;flex-direction:row;font-size:.875rem;font-weight:400;gap:.55rem}.checkbox-label input{flex-shrink:0;margin-top:.2rem}.school-combobox{position:relative}.school-combobox label{display:flex;flex-direction:column;font-size:.875rem;font-weight:500;gap:.35rem}.school-combobox input{border:1px solid var(--border);border-radius:6px;font:inherit;padding:.55rem .65rem;width:100%}.school-combobox-selected{color:var(--muted);font-size:.8125rem;margin-top:.35rem}.school-combobox-list{background:#fff;border:1px solid var(--border);border-radius:6px;box-shadow:0 8px 24px rgb(0 0 0/8%);left:0;list-style:none;margin-top:.35rem;max-height:16rem;overflow-y:auto;position:absolute;right:0;z-index:20}.school-combobox-list li{border-bottom:1px solid var(--border)}.school-combobox-list li:last-child{border-bottom:none}.school-combobox-list button.is-unavailable{cursor:not-allowed;opacity:.85}.school-combobox-list button.is-unavailable.is-active,.school-combobox-list button.is-unavailable:hover{background:#fef2f2}.school-status-hint{color:#991b1b;display:block;font-size:.75rem;margin-top:.15rem}.school-combobox-notice{background:#fef2f2;border-radius:6px;color:#991b1b;font-size:.875rem;margin-top:.5rem;padding:.65rem .75rem}.school-combobox-list button{background:transparent;border:none;cursor:pointer;display:block;font:inherit;padding:.55rem .65rem;text-align:left;width:100%}.school-combobox-list button.is-active,.school-combobox-list button:hover{background:var(--accent-subtle)}.school-combobox-status{color:var(--muted);font-size:.875rem;padding:.65rem}.school-combobox-error{color:#b91c1c}.approval-layout{display:grid;grid-gap:1.25rem;gap:1.25rem;grid-template-columns:1fr;margin-top:1rem}@media (min-width:900px){.approval-layout{grid-template-columns:minmax(220px,280px) 1fr}}.approval-list .school-list{max-height:none}.approval-list-item{background:transparent;border:1px solid var(--border);border-radius:8px;cursor:pointer;display:flex;flex-direction:column;font:inherit;gap:.2rem;margin-bottom:.5rem;padding:.65rem .75rem;text-align:left;width:100%}.approval-list-item span{color:var(--muted);font-size:.8125rem}.approval-list-item.is-selected{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}.approval-detail{border:1px solid var(--border);border-radius:8px;padding:1rem}.approval-hint{background:var(--accent-subtle);border-radius:6px;color:var(--vinci-slate);font-size:.875rem;margin:.75rem 0;padding:.65rem .75rem}.approval-text{font-size:.9375rem;margin:0 0 .75rem;white-space:pre-wrap}.sku-approval-list{display:flex;flex-direction:column;gap:.75rem;margin:0 0 1rem}.sku-approval-row{border:1px solid var(--border);border-radius:8px;display:flex;flex-direction:column;gap:.5rem;padding:.75rem}.sku-approval-row.is-disabled{opacity:.55}.sku-approval-row-header{align-items:center;display:flex;font-weight:600;gap:.5rem}.price-tier-fieldset{border:none;display:flex;flex-direction:column;gap:.5rem;margin:0;padding:0}.price-tier-option{align-items:center;display:flex;font-size:.9375rem;gap:.5rem}.approval-actions{display:flex;flex-wrap:wrap;gap:.5rem}.pipeline-deal-card,.pipeline-deal-list{display:flex;flex-direction:column;gap:1rem}.pipeline-deal-card{border:1px solid var(--border);border-radius:10px;padding:1rem 1.1rem}.pipeline-deal-card-header{align-items:flex-start;display:flex;gap:.75rem;justify-content:space-between}.pipeline-deal-school{font-size:1.05rem;font-weight:600;margin:0 0 .25rem}.pipeline-deal-meta{color:var(--muted);font-size:.8125rem;margin:0}.pipeline-deal-facts{display:grid;grid-gap:.65rem 1.25rem;gap:.65rem 1.25rem;grid-template-columns:repeat(auto-fit,minmax(9rem,1fr));margin:0}.pipeline-deal-facts div{display:flex;flex-direction:column;gap:.15rem}.pipeline-deal-facts dt{color:var(--muted);font-size:.6875rem;font-weight:600;letter-spacing:.04em;margin:0;text-transform:uppercase}.pipeline-deal-facts dd{font-size:.875rem;margin:0}.deal-pricing{border-radius:8px;padding:.85rem 1rem}.deal-pricing-approved{background:#f0fdf4;border:1px solid #bbf7d0}.deal-pricing-pending{background:#fffbeb;border:1px solid #fde68a}.deal-pricing-rejected{background:#f9fafb;border:1px solid var(--border)}.deal-pricing-label{font-size:.6875rem;font-weight:700;letter-spacing:.05em;margin:0 0 .5rem;text-transform:uppercase}.deal-pricing-approved .deal-pricing-label{color:#166534}.deal-pricing-pending .deal-pricing-label{color:#854d0e}.deal-pricing-rejected .deal-pricing-label{color:var(--muted)}.deal-pricing-message{color:var(--muted);font-size:.8125rem;line-height:1.45;margin:0}.deal-pricing-lines{display:flex;flex-direction:column;gap:.45rem;list-style:none;margin:0;padding:0}.deal-pricing-line{align-items:baseline;display:flex;gap:.75rem;justify-content:space-between}.deal-pricing-sku{font-size:.9375rem;font-weight:500}.deal-pricing-amount{font-size:.9375rem;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;font-weight:600;white-space:nowrap}.pipeline-row{cursor:pointer}.pipeline-row:hover{background:#f8f9fc}.pipeline-row.is-expanded{background:#f3f6fb}.pipeline-row-chevron{color:var(--muted);display:inline-block;font-size:1rem;line-height:1;margin-right:.35rem;transform:rotate(0deg);transition:transform .15s ease;vertical-align:middle}.pipeline-row-chevron.is-expanded{transform:rotate(90deg)}.pipeline-row-detail td{background:#f8f9fc;padding-bottom:.85rem;padding-top:0}.pipeline-pricing-panel{border-left:3px solid var(--accent);margin-left:.15rem;max-width:28rem;padding:.65rem 0 .15rem .85rem}.pipeline-pricing-panel-label{color:var(--muted);font-size:.6875rem;font-weight:700;letter-spacing:.05em;margin:0 0 .45rem;text-transform:uppercase}.pipeline-pricing-panel-message{color:var(--muted);font-size:.8125rem;line-height:1.45;margin:0}.pipeline-pricing-lines{display:flex;flex-direction:column;gap:.35rem;list-style:none;margin:0;padding:0}.pipeline-pricing-line{align-items:baseline;display:flex;gap:.75rem;justify-content:space-between}.pipeline-pricing-sku{font-size:.8125rem;font-weight:500;line-height:1.35}.pipeline-pricing-tier{color:var(--muted);font-weight:400}.pipeline-pricing-amount{font-size:.8125rem;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;font-weight:600;white-space:nowrap}.sr-only{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.reservation-list-item{align-items:center;display:flex;flex-wrap:wrap;gap:.75rem;justify-content:space-between;margin-bottom:.5rem}.resource-form{display:flex;flex-direction:column;gap:.9rem;margin-top:1rem}.resource-form .field-label,.resource-form label{display:flex;flex-direction:column;font-size:.875rem;font-weight:500;gap:.35rem}.data-table select,.resource-form input:not([type]),.resource-form input[type=text],.resource-form select{border:1px solid var(--border);border-radius:6px;font:inherit;padding:.55rem .65rem}.resource-access{display:flex;flex-direction:column;gap:.5rem;margin-top:.35rem}.resource-partner-list{display:flex;flex-direction:column;gap:.35rem;margin-left:.25rem}.resource-list{list-style:none;margin:0;padding:0}.resource-list-item{align-items:center;border-top:1px solid var(--border);display:flex;flex-wrap:wrap;gap:.75rem;justify-content:space-between;padding:.85rem 0}.resource-list-item:first-child{border-top:none;padding-top:0}.resource-list-meta{color:var(--muted);font-size:.8125rem;margin-top:.2rem}