:root{--uchu-gray-1: oklch(95.57% .003 286.35);--uchu-gray-2: oklch(92.04% .002 197.12);--uchu-gray-3: oklch(88.28% .003 286.34);--uchu-gray-4: oklch(84.68% .002 197.12);--uchu-gray-5: oklch(80.73% .002 247.84);--uchu-gray-6: oklch(75.03% .002 247.85);--uchu-gray-7: oklch(69.01% .003 286.32);--uchu-gray-8: oklch(63.12% .004 219.55);--uchu-gray-9: oklch(56.82% .004 247.89);--uchu-red-1: oklch(88.98% .052 3.28);--uchu-red-2: oklch(78.78% .109 4.54);--uchu-red-3: oklch(69.86% .162 7.82);--uchu-red-4: oklch(62.73% .209 12.37);--uchu-red-5: oklch(58.63% .231 19.6);--uchu-red-6: oklch(54.41% .214 19.06);--uchu-red-7: oklch(49.95% .195 18.34);--uchu-red-8: oklch(45.8% .177 17.7);--uchu-red-9: oklch(41.17% .157 16.58);--uchu-pink-1: oklch(95.8% .023 354.27);--uchu-pink-2: oklch(92.14% .046 352.31);--uchu-pink-3: oklch(88.9% .066 354.39);--uchu-pink-4: oklch(85.43% .09 354.1);--uchu-pink-5: oklch(82.23% .112 355.33);--uchu-pink-6: oklch(76.37% .101 355.37);--uchu-pink-7: oklch(70.23% .092 354.96);--uchu-pink-8: oklch(64.11% .084 353.91);--uchu-pink-9: oklch(57.68% .074 353.14);--uchu-purple-1: oklch(89.1% .046 305.24);--uchu-purple-2: oklch(78.68% .091 305);--uchu-purple-3: oklch(68.5% .136 303.78);--uchu-purple-4: oklch(58.47% .181 302.06);--uchu-purple-5: oklch(49.39% .215 298.31);--uchu-purple-6: oklch(46.11% .198 298.4);--uchu-purple-7: oklch(42.77% .181 298.49);--uchu-purple-8: oklch(39.46% .164 298.29);--uchu-purple-9: oklch(36.01% .145 298.35);--uchu-blue-1: oklch(89.66% .046 260.67);--uchu-blue-2: oklch(80.17% .091 258.88);--uchu-blue-3: oklch(70.94% .136 258.06);--uchu-blue-4: oklch(62.39% .181 258.33);--uchu-blue-5: oklch(54.87% .222 260.33);--uchu-blue-6: oklch(51.15% .204 260.17);--uchu-blue-7: oklch(47.36% .185 259.89);--uchu-blue-8: oklch(43.48% .17 260.2);--uchu-blue-9: oklch(39.53% .15 259.87);--uchu-green-1: oklch(93.96% .05 148.74);--uchu-green-2: oklch(88.77% .096 147.71);--uchu-green-3: oklch(83.74% .139 146.57);--uchu-green-4: oklch(79.33% .179 145.62);--uchu-green-5: oklch(75.23% .209 144.64);--uchu-green-6: oklch(70.03% .194 144.71);--uchu-green-7: oklch(64.24% .175 144.92);--uchu-green-8: oklch(58.83% .158 145.05);--uchu-green-9: oklch(52.77% .138 145.41);--uchu-yellow-1: oklch(97.05% .039 91.2);--uchu-yellow-2: oklch(95% .07 92.39);--uchu-yellow-3: oklch(92.76% .098 92.58);--uchu-yellow-4: oklch(90.92% .125 92.56);--uchu-yellow-5: oklch(89% .146 91.5);--uchu-yellow-6: oklch(82.39% .133 91.5);--uchu-yellow-7: oklch(75.84% .122 92.21);--uchu-yellow-8: oklch(69.14% .109 91.04);--uchu-yellow-9: oklch(62.29% .097 91.9);--uchu-orange-1: oklch(93.83% .037 56.93);--uchu-orange-2: oklch(88.37% .073 55.8);--uchu-orange-3: oklch(83.56% .108 56.49);--uchu-orange-4: oklch(78.75% .142 54.33);--uchu-orange-5: oklch(74.61% .171 51.56);--uchu-orange-6: oklch(69.33% .157 52.18);--uchu-orange-7: oklch(63.8% .142 52.1);--uchu-orange-8: oklch(58.28% .128 52.2);--uchu-orange-9: oklch(52.49% .113 51.98);--uchu-yin-1: oklch(91.87% .003 264.54);--uchu-yin-2: oklch(84.61% .004 286.31);--uchu-yin-3: oklch(76.89% .004 247.87);--uchu-yin-4: oklch(69.17% .004 247.88);--uchu-yin-5: oklch(61.01% .005 271.34);--uchu-yin-6: oklch(52.79% .005 271.32);--uchu-yin-7: oklch(43.87% .005 271.3);--uchu-yin-8: oklch(35.02% .005 236.66);--uchu-yin-9: oklch(25.11% .006 258.36);--uchu-yin: oklch(14.38% .007 256.88);--uchu-yang: oklch(99.4% 0 0);--font-mono: "Berkeley Mono Variable", ui-monospace, SFMono-Regular, Monaco, Consolas, monospace;--font-serif: "EB Garamond", ui-serif, Garamond, Georgia, "Times New Roman", Times, serif;--text-xs: .8rem;--text-sm: .9rem;--text-code: 1rem;--text-base: 1rem;--text-lg: 1.115rem;--text-xl: 1.25rem;--text-2xl: 1.5rem;--text-3xl: 1.75rem;--text-4xl: 2rem;--leading-tight: 1.3;--leading-normal: 1.65;--leading-relaxed: 1.75;--font-ultralight: 100;--font-regular: 400;--font-semibold: 600;--font-bold: 700;--color-bg: var(--uchu-yang);--color-bg-alt: var(--uchu-gray-1);--color-surface: var(--uchu-yang);--color-text: var(--uchu-yin-8);--color-text-heading: var(--uchu-yin);--color-text-muted: var(--uchu-yin-8);--color-text-subtle: var(--uchu-yin-8);--color-border: var(--uchu-gray-4);--color-border-dark: var(--uchu-gray-6);--color-accent: var(--uchu-blue-5);--color-accent-bg: var(--uchu-blue-1);--color-code-bg: var(--uchu-gray-2);--color-tag-bg: var(--uchu-gray-3);--color-tag-text: var(--uchu-yin);--color-toolbar-bg: var(--uchu-yin-9);--color-toolbar-text: var(--uchu-gray-5);--color-toolbar-text-active: var(--uchu-yang);--color-toolbar-hover-bg: var(--uchu-yin-8);--color-toolbar-active-bg: var(--uchu-yin-7);--color-dot: var(--uchu-gray-2);--space-xs: .25rem;--space-sm: .5rem;--space-md: 1rem;--space-lg: 1.5rem;--space-xl: 2rem;--space-2xl: 3rem;--max-width-content: 750px;--max-width-container: 900px;--max-width-wide: 1200px;--toolbar-height: 50px;--toc-width: 250px;--radius-sm: 4px;--radius-md: 6px;--radius-lg: 8px;--radius-full: 9999px;--shadow-sm: 0 1px 4px oklch(0% 0 0 / .06);--shadow-md: 0 2px 8px oklch(0% 0 0 / .08);--transition-fast: .2s ease;--transition-normal: .3s ease}*,*:before,*:after{box-sizing:border-box}body{margin:0;font-family:var(--font-mono);font-size:var(--text-base);line-height:var(--leading-normal);color:var(--color-text);background-color:var(--color-bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.App{display:flex;flex-direction:column;min-height:100vh;background-color:var(--color-bg)}.toolbar{position:sticky;top:0;z-index:10;height:var(--toolbar-height);background-color:var(--color-toolbar-bg);border-bottom:1px solid var(--uchu-yin-7)}.toolbar-inner{display:flex;align-items:center;justify-content:space-between;height:100%;max-width:var(--max-width-wide);margin:0 auto;padding:0 var(--space-lg)}.toolbar-brand{display:flex;align-items:center;gap:var(--space-sm);text-decoration:none;color:var(--color-toolbar-text-active);font-family:var(--font-mono);font-size:var(--text-sm);font-weight:var(--font-semibold);transition:color var(--transition-fast)}.toolbar-brand:hover{color:var(--color-toolbar-text)}.toolbar-logo{height:22px;width:auto;filter:brightness(0) invert(1)}.toolbar-nav-link{font-family:var(--font-mono);font-size:var(--text-sm);color:var(--color-toolbar-text);text-decoration:none;transition:color var(--transition-fast)}.toolbar-nav-link:hover{color:var(--color-toolbar-text-active)}.main{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;width:100%;max-width:var(--max-width-content);margin:0 auto;padding:var(--space-2xl) var(--space-xl)}.main-title{font-family:var(--font-serif);font-size:var(--text-4xl);font-weight:var(--font-bold);color:var(--color-text-heading);margin:0 0 var(--space-xs) 0;letter-spacing:-.01em}.main-subtitle{font-size:var(--text-sm);color:var(--color-text-muted);margin:0 0 var(--space-2xl) 0}.footer{height:var(--toolbar-height);background-color:var(--color-toolbar-bg);border-top:1px solid var(--uchu-yin-7)}.footer-inner{display:flex;align-items:center;justify-content:space-between;height:100%;max-width:var(--max-width-wide);margin:0 auto;padding:0 var(--space-lg)}.footer-copy{font-size:var(--text-xs);color:var(--color-toolbar-text)}.footer-link{font-size:var(--text-xs);color:var(--color-toolbar-text);text-decoration:none;transition:color var(--transition-fast)}.footer-link:hover{color:var(--color-toolbar-text-active)}.ip-form{display:flex;flex-direction:column;gap:var(--space-md);width:100%}.ip-form label{font-size:var(--text-sm);font-weight:var(--font-semibold);color:var(--color-text-subtle)}.ip-form-row{display:flex;gap:var(--space-sm)}.ip-form input[type=text]{flex:1;padding:var(--space-sm) var(--space-md);font-family:var(--font-mono);font-size:var(--text-base);color:var(--color-text);background-color:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);outline:none;transition:border-color var(--transition-fast)}.ip-form input[type=text]:focus{border-color:var(--color-accent)}.ip-form input[type=submit]{padding:var(--space-sm) var(--space-lg);font-family:var(--font-mono);font-size:var(--text-sm);font-weight:var(--font-semibold);color:var(--uchu-yang);background-color:var(--uchu-yin-8);border:none;border-radius:var(--radius-md);cursor:pointer;transition:background-color var(--transition-fast)}.ip-form input[type=submit]:hover{background-color:var(--uchu-yin)}.ip-status{margin-top:var(--space-lg);padding:var(--space-md) var(--space-lg);border-radius:var(--radius-md);font-size:var(--text-sm)}.ip-status--authorized{background-color:var(--uchu-green-1);color:var(--uchu-green-8);border:1px solid var(--uchu-green-3)}.ip-status--unauthorized{background-color:var(--uchu-red-1);color:var(--uchu-red-8);border:1px solid var(--uchu-red-3)}.ip-status--error{background-color:var(--uchu-yellow-1);color:var(--uchu-yellow-8);border:1px solid var(--uchu-yellow-3)}.ip-status strong{font-weight:var(--font-bold)}.ip-status code{font-family:var(--font-mono);font-weight:var(--font-semibold)}.admin-login-form{display:flex;flex-direction:column;gap:var(--space-md);width:100%;max-width:360px}.admin-login-form label{font-size:var(--text-sm);font-weight:var(--font-semibold);color:var(--color-text-subtle)}.admin-login-form input[type=text],.admin-login-form input[type=password]{padding:var(--space-sm) var(--space-md);font-family:var(--font-mono);font-size:var(--text-base);color:var(--color-text);background-color:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);outline:none;transition:border-color var(--transition-fast)}.admin-login-form input:focus{border-color:var(--color-accent)}.admin-login-form button{padding:var(--space-sm) var(--space-lg);font-family:var(--font-mono);font-size:var(--text-sm);font-weight:var(--font-semibold);color:var(--uchu-yang);background-color:var(--uchu-yin-8);border:none;border-radius:var(--radius-md);cursor:pointer;transition:background-color var(--transition-fast)}.admin-login-form button:hover{background-color:var(--uchu-yin)}.admin-error{color:var(--uchu-red-5);font-size:var(--text-sm);margin:0}.admin-main{max-width:var(--max-width-wide);align-items:stretch;justify-content:flex-start}.admin-tabs{display:flex;gap:var(--space-xs);margin-bottom:var(--space-lg);border-bottom:1px solid var(--color-border);width:100%}.admin-tab{padding:var(--space-sm) var(--space-lg);font-family:var(--font-mono);font-size:var(--text-sm);font-weight:var(--font-semibold);color:var(--color-text-muted);background:none;border:none;border-bottom:2px solid transparent;cursor:pointer;transition:color var(--transition-fast),border-color var(--transition-fast)}.admin-tab:hover{color:var(--color-text-heading)}.admin-tab--active{color:var(--color-text-heading);border-bottom-color:var(--color-accent)}.admin-section{width:100%}.admin-section-title{font-family:var(--font-serif);font-size:var(--text-xl);font-weight:var(--font-bold);color:var(--color-text-heading);margin:0 0 var(--space-md) 0}.admin-table-wrap{overflow-x:auto;border:1px solid var(--color-border);border-radius:var(--radius-md)}.admin-table{width:100%;border-collapse:collapse;font-size:var(--text-sm)}.admin-table th,.admin-table td{padding:var(--space-sm) var(--space-md);text-align:left;border-bottom:1px solid var(--color-border)}.admin-table th{font-weight:var(--font-semibold);background-color:var(--color-bg-alt);color:var(--color-text-heading)}.admin-table tr:last-child td{border-bottom:none}.admin-table code{font-family:var(--font-mono)}.error-page{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:var(--space-2xl) var(--space-xl)}.error-logo{width:80px;height:auto;margin-bottom:var(--space-xl);opacity:.7}.error-code{font-family:var(--font-serif);font-size:6rem;font-weight:var(--font-bold);color:var(--color-text-heading);margin:0 0 var(--space-xs) 0;letter-spacing:-.02em;line-height:1}.error-message{font-size:var(--text-sm);color:var(--color-text-muted);margin:0 0 var(--space-xl) 0}.error-home{display:inline-block;padding:var(--space-sm) var(--space-lg);font-family:var(--font-mono);font-size:var(--text-sm);font-weight:var(--font-semibold);color:var(--uchu-yang);background-color:var(--uchu-yin-8);border-radius:var(--radius-md);text-decoration:none;transition:background-color var(--transition-fast)}.error-home:hover{background-color:var(--uchu-yin)}
