.portal main{background:var(--bg-2);min-height:calc(100vh - 69px)}
.portal .bar .who{margin-left:12px;font-size:.9rem;color:var(--muted)}
.portal .bar form{margin:0}
.section-sm{padding:40px 0 80px}
.section-sm h1{font-size:clamp(1.8rem,3vw,2.4rem)}
.muted{color:var(--muted)}
.btn-sm{padding:8px 14px;min-height:40px;font-size:.9rem}
.product,.panel{background:#fff;border:1px solid var(--line);border-radius:18px;padding:24px;margin-top:24px;scroll-margin-top:90px}
.product h2,.panel h2{font-size:1.4rem;margin-bottom:8px}
.product h3{margin-top:20px;font-size:1rem;color:var(--green)}
.tbl{width:100%;border-collapse:collapse;font-size:.93rem;margin:8px 0 16px}
.tbl th{text-align:left;font-size:.78rem;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);padding:8px 10px;border-bottom:1px solid var(--line)}
.tbl td{padding:10px;border-bottom:1px solid var(--line);vertical-align:middle}
.tbl td form{margin:0}
.matrix td,.matrix th{text-align:center}.matrix td:first-child,.matrix th:first-child{text-align:left}
.matrix input{width:20px;height:20px;accent-color:var(--green)}
.scroll{overflow-x:auto}
.actions{display:flex;gap:10px;align-items:center}
.inline-form{display:flex;gap:10px;flex-wrap:wrap}
.inline-form input{flex:1;min-width:200px}
.grid-form{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px;align-items:end;margin:12px 0 8px;padding:16px;background:var(--bg-2);border-radius:14px}
.grid-form label{font-weight:600;font-size:.88rem;display:flex;flex-direction:column;gap:6px}
.grid-form label.check{flex-direction:row;align-items:center;min-height:48px}
.portal input:not([type=checkbox]),.portal select{font:inherit;padding:10px 12px;min-height:44px;border:1.5px solid var(--line);border-radius:10px;background:#fff}
.portal input:focus,.portal select:focus{outline:none;border-color:var(--green);box-shadow:0 0 0 3px var(--green-50)}
.link-danger{background:none;border:0;color:#b42318;font:inherit;font-size:.88rem;cursor:pointer;padding:6px}
.link-danger:hover{text-decoration:underline}
.alert{padding:12px 14px;border-radius:12px;background:#fdecea;color:#b42318;margin:16px 0}
.alert.ok{background:var(--green-50);color:var(--green)}
.admin-nav{display:flex;gap:6px;flex-wrap:wrap;margin:8px 0 0}
.admin-nav a{font-weight:600;font-size:.9rem;text-decoration:none;padding:8px 12px;border-radius:10px;background:#fff;border:1px solid var(--line)}
.login-card form .btn{width:100%;justify-content:center;margin-top:24px}
.login-card .note{margin-top:18px;text-align:center}
