:root{color-scheme:light;--accent:#2563eb;--accent-strong:#1d4ed8;--accent-soft:#e1ebff;--accent-gradient:linear-gradient(135deg, #2563eb, #4f46e5);--surface:#ffffff;--surface-muted:rgba(255, 255, 255, 0.76);--surface-glass:rgba(255, 255, 255, 0.88);--border:rgba(31, 45, 75, 0.14);--text:#15263b;--text-muted:#5f738a;--danger:#d64545;--shadow-soft:0 24px 40px -24px rgba(31, 45, 75, 0.4);--shadow-strong:0 34px 60px -28px rgba(37, 99, 235, 0.45)}*{box-sizing:border-box}.wrapper,body{position:relative}body{font-family:"Segoe UI","Inter","Roboto",sans-serif;margin:0;padding:56px 20px 120px;color:var(--text);line-height:1.5;min-height:100vh;background:linear-gradient(180deg,#f5f7ff 0,#eef2ff 45%,#f8fafd 100%)}body::before{content:"";position:fixed;inset:0;background:radial-gradient(circle at 15% 15%,rgba(76,110,245,.18),transparent 52%),radial-gradient(circle at 82% -5%,rgba(164,191,255,.22),transparent 55%),radial-gradient(circle at 55% 110%,rgba(191,210,255,.2),transparent 60%);pointer-events:none;z-index:-1}h1,h2,h3,h4{margin:0 0 14px;font-weight:600;color:var(--text)}h1{font-size:32px;letter-spacing:-.02em}h2{font-size:22px}.wrapper{max-width:1180px;margin:0 auto;display:grid;gap:36px}.builder,.cabinet,.catalog,.results,header{position:relative;overflow:hidden;box-shadow:var(--shadow-soft)}header{border-radius:24px;padding:42px 48px;background:var(--surface);border:1px solid rgba(255,255,255,.75)}header::after,header::before{content:"";position:absolute;z-index:0}header::before{inset:0;background:linear-gradient(135deg,rgba(37,99,235,.12),rgba(79,70,229,.08))}header::after{top:-140px;right:-80px;width:280px;height:280px;background:radial-gradient(circle,rgba(79,70,229,.28)0,transparent 70%)}header h1,header p{position:relative;z-index:1}header p,label span{color:var(--text-muted)}header p{margin:0;max-width:760px;font-size:16px}.builder,.cabinet,.catalog,.results{border-radius:22px;padding:36px 40px;background:var(--surface-glass);border:1px solid rgba(255,255,255,.76);backdrop-filter:blur(10px)}.builder::before,.cabinet::before,.catalog::before,.results::before{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(255,255,255,.12),rgba(230,237,255,.05));z-index:0}.builder>*,.cabinet>*,.catalog>*,.results>*{position:relative;z-index:1}.builder h2,.cabinet h2,.catalog h2,.results h2{margin-bottom:22px}.cabinet-controls{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:16px;margin-bottom:18px;align-items:end}.cabinet-flex{display:grid;grid-template-columns:1.3fr 1fr;gap:20px}@media (max-width:980px){.cabinet-flex{grid-template-columns:1fr}}.cabinet-canvas{border-radius:16px;border:1px solid var(--border);background:rgba(255,255,255,.85);padding:12px;overflow:auto;min-height:260px}.cabinet-nav{display:flex;align-items:center;gap:10px;margin-top:8px}.cabinet-legend,.cabinet-sizes,input[type=number],select{border-radius:16px;border:1px solid rgba(31,45,75,.1);background:rgba(255,255,255,.9);padding:14px 16px}.cabinet-legend h3,.cabinet-sizes h3{font-size:16px;margin:0 0 10px}.cabinet-warnings{border-radius:12px;padding:12px 14px;margin-top:12px;border:1px solid rgba(214,69,69,.35);background:rgba(214,69,69,.08);color:var(--danger)}.cabinet-sizes table{width:100%;border-collapse:collapse}.cabinet-sizes td,.cabinet-sizes th{padding:8px 10px;font-size:13px;border-bottom:1px solid rgba(31,45,75,.08)}.cabinet-sizes thead th{background:rgba(245,248,255,.7);text-align:left}.cabinet-sizes input[type=number]{padding:8px 10px;border-radius:10px;font-size:13px}.adder{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:18px;margin-bottom:26px;align-items:end;padding:18px 20px;border-radius:18px;background:rgba(255,255,255,.75);border:1px solid rgba(31,45,75,.08)}label span{display:block;font-size:12px;letter-spacing:.02em;margin-bottom:6px;text-transform:uppercase}input[type=number],select{width:100%;padding:12px 14px;border-radius:12px;border:1px solid rgba(31,45,75,.16);font-size:14px;color:var(--text);transition:border-color .18s ease,box-shadow .18s ease,transform .18s ease;box-shadow:inset 0 1px 0 rgba(255,255,255,.55)}input[type=number]:focus,select:focus{outline:0;border-color:rgba(37,99,235,.45);box-shadow:0 0 0 4px rgba(37,99,235,.12);background:#fff;transform:translateY(-1px)}input[type=number]:focus-visible,select:focus-visible{outline:0}button{cursor:pointer;border-radius:12px;border:0;padding:12px 22px;font-size:15px;font-weight:600;transition:transform .2s ease,box-shadow .2s ease,filter .2s ease}button.primary{background:var(--accent-gradient);color:#fff;box-shadow:0 16px 28px -14px rgba(37,99,235,.55)}button.primary:hover{transform:translateY(-1px);filter:brightness(1.05);box-shadow:var(--shadow-strong)}button.primary:active{transform:translateY(0);filter:brightness(.98);box-shadow:0 10px 20px -16px rgba(37,99,235,.5)}button.primary:focus-visible{outline:0;box-shadow:0 0 0 4px rgba(37,99,235,.28),0 12px 24px -10px rgba(37,99,235,.55)}.requirements-table{width:100%;border-collapse:collapse;border-radius:18px;overflow:hidden;background:rgba(255,255,255,.82);border:1px solid rgba(31,45,75,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.4)}.requirements-table thead{background:rgba(245,248,255,.85);backdrop-filter:blur(8px)}.requirements-table tbody tr,.requirements-table thead tr{display:grid;grid-template-columns:minmax(0,1fr) 160px 52px;align-items:start;column-gap:18px;border-bottom:1px solid rgba(31,45,75,.08)}.requirements-table td,.requirements-table th{padding:16px 18px;font-size:14px;text-align:left}.requirements-table tbody tr{transition:background .2s ease}.requirements-table tbody tr:last-child{border-bottom:none}.requirements-table tbody tr:nth-child(even){background:rgba(230,237,255,.3)}.requirements-table tbody tr:hover{background:rgba(230,237,255,.35)}.requirements-table td:last-child,.requirements-table th:last-child{text-align:right;justify-self:end}.requirements-table td:first-child{display:flex;flex-direction:column;gap:6px}.requirements-table td:nth-child(2){display:flex;flex-direction:column;gap:8px;align-items:flex-start;justify-content:flex-start}.requirements-table td:last-child{display:flex;flex-direction:column;gap:8px;align-items:flex-end;justify-content:flex-start}.requirements-table .hint{display:block;font-size:12px;color:var(--text-muted);margin-top:6px}.requirements-table .remove-btn{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;padding:0;border-radius:50%;border:1px solid rgba(214,69,69,.28);background:0 0;color:var(--danger);font-size:18px;line-height:1;transition:background .2s ease,color .2s ease,box-shadow .2s ease,transform .2s ease,border-color .2s ease}.requirements-table .remove-btn:hover{background:rgba(214,69,69,.16);border-color:rgba(214,69,69,.4);color:var(--danger);transform:translateY(-1px);box-shadow:0 8px 14px -10px rgba(214,69,69,.45)}.requirements-table .remove-btn:active{transform:translateY(0);box-shadow:none;background:rgba(214,69,69,.22)}.requirements-table .remove-btn:focus-visible{outline:0;box-shadow:0 0 0 3px rgba(214,69,69,.28)}.requirements-table .empty-row td{text-align:center;color:var(--text-muted);font-style:italic;padding:32px 18px;grid-column:1/-1}.summary-box,.warnings{border-radius:18px;padding:18px 22px}.summary-box{background:rgba(255,255,255,.82);border:1px solid rgba(31,45,75,.1);margin-bottom:26px;font-size:15px;box-shadow:inset 0 1px 0 rgba(255,255,255,.45)}.summary-box strong{color:var(--accent)}.warnings{border:1px solid rgba(214,69,69,.35);background:rgba(214,69,69,.1);color:var(--danger);margin-bottom:22px;box-shadow:inset 0 1px 0 rgba(255,255,255,.35)}.warnings ul{margin:0;padding-left:20px}.summary-table{width:100%;border-collapse:collapse;border-radius:18px;overflow:hidden;border:1px solid rgba(31,45,75,.08);margin-bottom:26px;background:rgba(255,255,255,.86);box-shadow:inset 0 1px 0 rgba(255,255,255,.45)}.summary-table thead{background:rgba(245,248,255,.85)}.summary-table td,.summary-table th{padding:14px 20px;font-size:14px;text-align:left;border-bottom:1px solid rgba(31,45,75,.08)}.summary-table tbody tr:nth-child(even){background:rgba(237,243,255,.3)}.summary-table tfoot td{font-weight:600;background:rgba(243,247,255,.7)}.breakdown-grid{display:grid;gap:18px;grid-template-columns:repeat(auto-fit,minmax(280px,1fr))}.breakdown-card{border:1px solid rgba(31,45,75,.08);border-radius:18px;padding:20px 22px;background:rgba(255,255,255,.82);box-shadow:inset 0 1px 0 rgba(255,255,255,.45);transition:transform .2s ease,box-shadow .2s ease}.breakdown-card:hover,.module-card:hover{transform:translateY(-4px);box-shadow:var(--shadow-soft)}.breakdown-card h4{margin-bottom:8px;font-size:16px}.breakdown-card p{margin:4px 0;font-size:13px;color:var(--text-muted)}.breakdown-card ul,.module-card ul{margin:12px 0 0;padding-left:20px;font-size:13px}.catalog-grid{display:grid;gap:20px;grid-template-columns:repeat(auto-fit,minmax(260px,1fr))}.module-card{border:1px solid rgba(31,45,75,.08);border-radius:20px;padding:24px 26px;background:rgba(255,255,255,.86);display:grid;gap:12px;transition:transform .22s ease,box-shadow .22s ease;box-shadow:inset 0 1px 0 rgba(255,255,255,.45)}.module-card:hover{transform:translateY(-5px)}.module-card h3{font-size:18px;margin-bottom:6px}.module-card .module-code{font-weight:700;color:var(--accent);letter-spacing:.03em;font-size:13px;text-transform:uppercase}.module-card .badge{display:inline-block;border-radius:14px;padding:4px 12px;background:var(--accent-soft);color:var(--accent);font-size:12px;font-weight:600}.module-card ul{margin:0}table input[type=number],table select{background:rgba(255,255,255,.95)}.module-card ul,.muted{color:var(--text-muted)}@media (max-width:900px){.builder,.catalog,.results,header{padding:28px 24px}.adder{padding:16px 18px}.requirements-table tbody tr,.requirements-table thead tr{grid-template-columns:minmax(0,1fr) 140px 48px;column-gap:14px}}@media (max-width:720px){body{padding:28px 14px 80px}header{padding:32px 24px}.wrapper{gap:28px}.requirements-table td,.requirements-table th{font-size:13px;padding:12px 14px}.requirements-table thead{display:none}.requirements-table tbody tr{grid-template-columns:minmax(0,1fr);row-gap:12px}.requirements-table td{justify-self:stretch;text-align:left}.requirements-table td:first-child,.requirements-table td:last-child,.requirements-table td:nth-child(2){align-items:flex-start}.requirements-table td:last-child{justify-content:flex-start;justify-self:stretch;text-align:left}.requirements-table td[data-label]::before{content:attr(data-label);display:block;font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--text-muted);margin-bottom:6px}.requirements-table td[data-label=""]::before{display:none}}.btn-narrow{padding:6px 10px}.text-center{text-align:center}.flex-1{flex:1}.mb-8{margin-bottom:8px}img,svg{max-width:100%;height:auto}@media (max-width:720px){.summary-table thead{display:none}.summary-table tbody tr{display:grid;grid-template-columns:minmax(0,1fr);row-gap:10px}.summary-table td{display:flex;justify-content:space-between;align-items:baseline;font-size:13px;padding:10px 14px;text-align:left}.summary-table td::before{content:attr(data-label);font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--text-muted);margin-right:12px}.summary-table td:nth-child(1)::before{content:"Модуль"}.summary-table td:nth-child(2)::before{content:"Кол-во"}.summary-table td:nth-child(3)::before{content:"Использование"}.summary-table td:nth-child(4)::before{content:"Резерв"}.summary-table tfoot{display:block}.summary-table tfoot tr{display:grid;grid-template-columns:minmax(0,1fr)}.summary-table tfoot td{display:flex;justify-content:space-between}.cabinet-sizes{overflow-x:auto}.cabinet-sizes table{min-width:440px}}@media (max-width:480px){h1{font-size:24px}header p{font-size:14px}body{padding:20px 12px 64px}.builder,.cabinet,.catalog,.results,header{padding:24px 16px}.cabinet-sizes{overflow-x:visible}.cabinet-sizes table{min-width:0}.cabinet-sizes thead{display:none}.cabinet-sizes tbody tr{display:grid;grid-template-columns:minmax(0,1fr);row-gap:8px}.cabinet-sizes td{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 12px;font-size:13px}.cabinet-sizes td::before{content:attr(data-label);font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--text-muted);margin-right:12px}.cabinet-sizes td input[type=number]{flex:1;min-width:0}}