:root{--surface:oklch(97.5% .003 240);--surface-raised:oklch(100% 0 0);--surface-sunken:oklch(95.5% .004 240);--ink:oklch(22% .01 250);--muted:oklch(50% .012 250);--line:oklch(90% .005 245);--line-strong:oklch(82% .008 245);--accent:oklch(45% .09 150);--accent-soft:oklch(94% .025 150);--blueprint:oklch(48% .1 230);--blueprint-soft:oklch(94% .02 230);--warn:oklch(62% .13 70);--warn-soft:oklch(95% .035 85);--diff-soft:oklch(95% .03 55);--danger:oklch(50% .16 25);--soil:#a9744f;--soil-dark:#6b3f23;--pit:#f5dfa3;--font-ui:"Pretendard Variable", Pretendard, "Apple SD Gothic Neo", system-ui, sans-serif;--font-mono:ui-monospace, "JetBrains Mono", "SF Mono", Menlo, monospace;--r-sm:6px;--r-md:10px;--shadow-sheet:0 1px 2px oklch(0% 0 0/.04), 0 4px 16px oklch(0% 0 0/.05);--dur:.15s}@media (prefers-color-scheme:dark){:root{--surface:oklch(20% .008 250);--surface-raised:oklch(24% .008 250);--surface-sunken:oklch(17% .008 250);--ink:oklch(92% .005 250);--muted:oklch(65% .01 250);--line:oklch(32% .008 250);--line-strong:oklch(40% .01 250);--accent:oklch(72% .1 150);--accent-soft:oklch(30% .04 150);--blueprint:oklch(75% .09 230);--blueprint-soft:oklch(30% .04 230);--warn:oklch(78% .12 80);--warn-soft:oklch(32% .05 85);--diff-soft:oklch(32% .05 55);--shadow-sheet:0 1px 2px oklch(0% 0 0/.3), 0 4px 16px oklch(0% 0 0/.25)}}*{box-sizing:border-box}html,body,#root{height:100%}body{font-family:var(--font-ui);color:var(--ink);background:var(--surface);margin:0;font-size:12.5px}button{font-family:inherit}.app{grid-template-rows:44px 1fr;height:100%;display:grid}.toolbar{background:var(--surface-raised);border-bottom:1px solid var(--line);align-items:center;gap:12px;padding:0 14px;display:flex}.brand{letter-spacing:-.01em;align-items:center;gap:8px;font-size:13.5px;font-weight:800;display:flex}.brand svg{color:var(--accent)}.toolbar .project-name{font-size:13px;font-weight:600}.toolbar .spacer{flex:1}.badge{background:var(--surface-sunken);color:var(--muted);border:1px solid var(--line);border-radius:999px;align-items:center;gap:4px;padding:2px 8px;font-size:11px;font-weight:600;display:inline-flex}.badge.blueprint{color:var(--blueprint);border-color:var(--blueprint);background:0 0}.badge.warn{color:oklch(35% .1 60);background:var(--warn-soft);border-color:#0000}@media (prefers-color-scheme:dark){.badge.warn{color:var(--warn)}}.btn{border:1px solid var(--line-strong);border-radius:var(--r-sm);background:var(--surface-raised);height:28px;color:var(--ink);cursor:pointer;transition:border-color var(--dur), background var(--dur);align-items:center;gap:6px;padding:0 10px;font-size:12px;font-weight:500;display:inline-flex}.btn:hover{border-color:var(--accent);color:var(--accent)}.btn:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:600}.btn.primary:hover{filter:brightness(1.1);color:#fff}.btn.ghost{color:var(--muted);background:0 0;border-color:#0000}.btn.ghost:hover{color:var(--danger);border-color:#0000}.feedback-group{align-items:center;gap:4px;display:inline-flex}.feedback-group a.btn{text-decoration:none}.feedback-group .btn.ghost{padding:0 6px}.feedback-group .btn.ghost:hover{color:var(--accent)}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.step-source a.source-link{color:inherit;align-items:center;gap:3px;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;display:inline-flex}.step-source a.source-link:hover,.step-source a.source-link:focus-visible{color:var(--accent)}.shell{grid-template-columns:200px minmax(0,1fr) 464px;min-height:0;display:grid}.sidebar{background:var(--surface-raised);border-right:1px solid var(--line);flex-direction:column;gap:4px;padding:12px 8px;display:flex;overflow-y:auto}.sidebar .nav-label{letter-spacing:.08em;color:var(--muted);text-transform:uppercase;padding:8px 8px 4px;font-size:10.5px;font-weight:700}.nav-item{border-radius:var(--r-sm);width:100%;color:var(--ink);cursor:pointer;text-align:left;transition:background var(--dur);background:0 0;border:none;align-items:center;gap:8px;padding:7px 8px;font-size:12.5px;display:flex}.nav-item:hover{background:var(--surface-sunken)}.nav-item.active{background:var(--accent-soft);color:var(--accent);font-weight:700}.nav-item svg{opacity:.75;flex-shrink:0}.nav-item .count{color:var(--muted);font-variant-numeric:tabular-nums;margin-left:auto;font-size:11px}.workspace{flex-direction:column;min-width:0;min-height:0;display:flex}.workspace-scroll{flex:1;padding:16px 18px;overflow-y:auto}.workspace h2{letter-spacing:-.01em;margin:0 0 10px;font-size:14px}.grid-wrap{background:var(--surface-raised);border:1px solid var(--line);border-radius:var(--r-md);overflow:hidden}.grid-wrap+.grid-wrap{margin-top:14px}.item-grid{border-collapse:collapse;width:100%;font-size:12.5px}.item-grid th{background:var(--surface-sunken);text-align:left;border-bottom:1px solid var(--line);color:var(--muted);padding:7px 8px;font-size:11px;font-weight:600;position:sticky;top:0}.item-grid td{border-bottom:1px solid var(--line);height:32px;padding:2px 5px}.item-grid tr{cursor:pointer}.item-grid tbody tr{transition:background var(--dur);border-left:3px solid #0000}.item-grid tbody tr:hover{background:var(--surface-sunken)}.item-grid tr.selected{background:var(--accent-soft);box-shadow:inset 3px 0 0 var(--accent)}.item-grid input,.item-grid select{border-radius:var(--r-sm);width:100%;min-width:52px;height:26px;font:inherit;color:inherit;font-variant-numeric:tabular-nums;background:0 0;border:1px solid #0000;padding:0 6px}.item-grid input:hover,.item-grid select:hover{border-color:var(--line-strong)}.item-grid input:focus,.item-grid select:focus{border-color:var(--accent);background:var(--surface-raised);outline:none}.item-grid td.calc{text-align:right;font-family:var(--font-mono);color:var(--blueprint);background:var(--blueprint-soft);font-variant-numeric:tabular-nums;font-size:12px;font-weight:600}.tick{animation:.6s ease-out tick;display:inline-block}@keyframes tick{0%{background:var(--warn-soft);box-shadow:0 0 0 3px var(--warn-soft)}to{box-shadow:none;background:0 0}}button.danger{color:var(--danger);cursor:pointer;opacity:0;background:0 0;border:none;font-size:11.5px}tr:hover button.danger,tr.selected button.danger{opacity:1}.grid-actions{background:var(--surface-raised);gap:8px;padding:8px 10px;display:flex}.grid-actions button{border:1px dashed var(--line-strong);border-radius:var(--r-sm);height:26px;color:var(--muted);cursor:pointer;background:0 0;align-items:center;gap:5px;padding:0 10px;font-size:12px;display:inline-flex}.grid-actions button:hover{border-color:var(--accent);color:var(--accent)}.stat-strip{border-top:1px solid var(--line);background:var(--surface-raised);gap:10px;padding:10px 18px;display:flex}.stat{border:1px solid var(--line);border-radius:var(--r-sm);background:var(--surface);flex-direction:column;gap:1px;min-width:110px;padding:6px 14px 5px;display:flex}.stat .k{color:var(--muted);font-size:10.5px;font-weight:600}.stat .v{font-family:var(--font-mono);color:var(--blueprint);font-variant-numeric:tabular-nums;font-size:15px;font-weight:700}.stat .v small{color:var(--muted);margin-left:2px;font-size:10.5px;font-weight:500}.sheet-panel{border-left:1px solid var(--line);background:var(--surface-sunken);flex-direction:column;min-height:0;padding:14px;display:flex;overflow:hidden}.panel-scroll{flex:1;min-height:0;overflow-y:auto}.sheet{background:linear-gradient(var(--surface-raised), var(--surface-raised)) padding-box, var(--surface-raised);background-image:linear-gradient(oklch(60% .04 230/.09) 1px,#0000 1px),linear-gradient(90deg,oklch(60% .04 230/.09) 1px,#0000 1px);background-size:16px 16px;background-color:var(--surface-raised);border:1px solid var(--line-strong);border-radius:var(--r-md);box-shadow:var(--shadow-sheet);overflow:hidden}.sheet-title{border-bottom:1px solid var(--line-strong);background:var(--surface-raised);justify-content:space-between;align-items:center;padding:8px 12px;font-size:11px;display:flex}.sheet-title .t{letter-spacing:.06em;font-weight:800}.sheet-title .no{font-family:var(--font-mono);color:var(--muted)}.diagram{width:100%;display:block}.dim-label{fill:var(--ink);font-size:11px;font-family:var(--font-mono)}.panel-actions{justify-content:flex-end;margin:12px 0 0;display:flex}.breakdown{margin-top:12px}.breakdown h3{letter-spacing:.04em;color:var(--muted);margin:0 0 8px;font-size:12px;font-weight:700}.breakdown ol{margin:0;padding:0;list-style:none;position:relative}.breakdown ol:before{content:"";background:var(--line-strong);width:1.5px;position:absolute;top:12px;bottom:12px;left:13px}.step-card{border:1px solid var(--line);border-radius:var(--r-sm);background:var(--surface-raised);transition:border-color var(--dur);margin-bottom:6px;padding:8px 10px 8px 36px;font-size:12px;position:relative}.step-card:before{content:attr(data-step);background:var(--blueprint);color:#fff;width:19px;height:19px;font-size:10px;font-weight:700;font-family:var(--font-mono);border-radius:50%;justify-content:center;align-items:center;display:flex;position:absolute;top:10px;left:4px}.step-card:hover{border-color:var(--warn);z-index:100}:is(.step-card:has(.unverified:hover),.step-card:has(.unverified:focus-visible)){z-index:9999}.step-head{justify-content:space-between;align-items:center;gap:8px;margin-bottom:3px;display:flex}.step-name{font-size:12px;font-weight:700}.variant-badge{color:var(--blueprint);border:1px solid var(--blueprint);border-radius:999px;padding:1px 7px;font-size:10.5px}.step-formula,.step-subst{font-family:var(--font-mono);color:var(--muted);font-size:11.5px}.step-result{margin-top:3px;font-size:12px}.step-result b{font-family:var(--font-mono);color:var(--blueprint);font-size:12.5px}.step-result .raw{color:var(--muted);font-size:10.5px;font-family:var(--font-mono)}.step-source{color:var(--muted);margin-top:3px;font-size:10.5px}.unverified{color:oklch(45% .12 60);background:var(--warn-soft);border-radius:4px;margin-left:4px;padding:1px 5px;font-weight:700}@media (prefers-color-scheme:dark){.unverified{color:var(--warn)}}.compare{background:var(--surface-raised);border:1px solid var(--line);border-radius:var(--r-md);margin-top:12px;padding:12px}.compare h3{color:var(--muted);margin:0 0 8px;font-size:12px}.compare td,.compare th{font-size:12px}.compare td.calc{background:0 0}.compare tr.diff td{background:var(--diff-soft);font-weight:700}.start{max-width:640px;margin:48px auto;padding:0 24px}.start h1{letter-spacing:-.02em;margin:0 0 4px;font-size:20px}.start .sub{color:var(--muted);margin:0 0 24px}.create-form{gap:8px;margin-bottom:28px;display:flex}.create-form input,.create-form select{border:1px solid var(--line-strong);border-radius:var(--r-sm);height:34px;font:inherit;background:var(--surface-raised);color:inherit;padding:0 10px}.create-form input{flex:1}.start ul{gap:8px;padding:0;list-style:none;display:grid}.project-card{text-align:left;border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface-raised);cursor:pointer;width:100%;color:inherit;transition:border-color var(--dur), box-shadow var(--dur);justify-content:space-between;align-items:center;padding:12px 16px;font-size:13px;display:flex}.project-card:hover{border-color:var(--accent);box-shadow:var(--shadow-sheet)}.project-card span{color:var(--muted);font-size:11.5px}.empty{color:var(--muted);text-align:center;padding:24px 0;font-size:12.5px}.print-view{color:#111;z-index:50;background:#fff;padding:32px 48px;position:fixed;inset:0;overflow-y:auto}.print-view h1{margin:0 0 6px;font-size:22px}.print-meta{color:#666;margin-bottom:20px;font-size:13px}.print-toolbar{justify-content:flex-end;gap:8px;margin-bottom:16px;display:flex}.print-item{break-inside:avoid;margin-bottom:22px}.print-item h2{margin:0 0 6px;font-size:14px}.print-item table{border-collapse:collapse;width:100%;font-size:11.5px}.print-item th,.print-item td{text-align:left;border:1px solid #d1d5db;padding:4px 6px}.print-item th{background:#f3f4f1}.print-footnote{color:#666;margin-top:24px;font-size:11px}@media print{.no-print{display:none!important}.print-view{padding:0;position:static}body>#root>.app>.toolbar,body>#root>.app>.shell{display:none}}@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}@media (width<=1100px){.shell{grid-template-columns:56px minmax(0,1fr) 400px}.sidebar .nav-item span,.sidebar .nav-label,.sidebar .count{display:none}}@media (width<=860px){.shell{grid-template-columns:56px minmax(0,1fr)}.sheet-panel{display:none}}.unverified{cursor:help;align-items:center;gap:3px;display:inline-flex;position:relative}.unverified svg{flex-shrink:0}.unverified .tooltip{z-index:9999;background:var(--ink);width:250px;color:var(--surface-raised);border-radius:var(--r-sm);box-shadow:var(--shadow-sheet);text-align:left;white-space:normal;padding:9px 11px;font-size:11px;font-weight:400;line-height:1.55;display:none;position:fixed;transform:translateY(-100%)}.unverified .tooltip:after{content:"";border:5px solid #0000;border-top-color:var(--ink);position:absolute;top:100%;right:20px}.unverified .tooltip b{margin-bottom:3px;font-weight:700;display:block}.unverified .tooltip em{opacity:.85;border-top:1px solid oklch(100% 0 0/.2);margin-top:5px;padding-top:5px;font-style:normal;display:block}.unverified:hover .tooltip,.unverified:focus-visible .tooltip{display:block}.unverified .tooltip .how{color:var(--accent-soft);border-top:1px solid oklch(50% 0 0/.35);margin-top:5px;padding-top:5px;font-weight:600;display:block}.profile-select{color:var(--muted);align-items:center;gap:6px;font-size:11.5px;display:inline-flex}.profile-select select{border:1px solid var(--line-strong);border-radius:var(--r-sm);background:var(--surface-raised);height:28px;color:var(--ink);font:inherit;padding:0 6px;font-size:12px}.unverified .tooltip.below{transform:none}.unverified .tooltip.below:after{border-top-color:#0000;border-bottom-color:var(--ink);top:auto;bottom:100%}.compare-note{color:var(--muted);margin:8px 0 0;font-size:11px}.print-part{margin:26px 0 10px;font-size:16px}.print-section-title{border-bottom:2px solid #333;margin:18px 0 8px;padding-bottom:4px;font-size:15px}.merged-note{color:#666;font-size:11px;font-weight:400}
