:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--background:#f2f6fc;--surface:#fff;--text:#17243d;--muted:#58677e;--line:#e0e7f1;--accent:#285cde}*{box-sizing:border-box}body{background:var(--background);color:var(--text);margin:0;font-family:Arial,Apple SD Gothic Neo,Malgun Gothic,sans-serif;line-height:1.6}a{color:inherit;text-decoration:none}a:focus-visible{outline:3px solid var(--accent);outline-offset:5px;border-radius:4px}.skip-link{z-index:10;background:var(--surface);padding:12px;position:fixed;top:-100px;left:12px}.skip-link:focus{top:12px}.site-header{background:var(--surface);border-bottom:1px solid var(--line)}.header-inner{justify-content:space-between;align-items:center;gap:16px;max-width:960px;margin:auto;padding:20px 28px;display:flex}.brand{letter-spacing:-.04em;align-items:center;gap:10px;font-size:24px;font-weight:750;display:inline-flex}.header-label{color:var(--muted);font-size:14px}.page-shell{max-width:960px;min-height:65vh;margin:auto;padding:0 28px}.intro{padding:36px 0 32px}.header-nav{color:var(--accent);flex:1;margin-left:28px;font-weight:700;display:flex}.preview-notice{border:1px solid var(--line);background:var(--surface);border-radius:6px;margin-bottom:12px;padding:4px 10px;font-size:12px;display:inline-block}h1{letter-spacing:-.05em;margin:12px 0 16px;font-size:clamp(26px,4vw,34px);line-height:1.3}p{color:var(--muted);margin:0}h1,h2,h3,p,.post-meta,.tag-list{overflow-wrap:anywhere}.list-heading{justify-content:space-between;align-items:baseline;gap:16px;padding:0 0 16px;display:flex}.list-heading h2{margin:0;font-size:18px}.list-heading span{color:var(--muted);font-size:13px}.post-list,.tag-list{margin:0;padding:0;list-style:none}.post-list{border:1px solid var(--line);background:var(--surface);border-radius:16px;overflow:hidden}.post-list>li+li{border-top:1px solid var(--line)}.post-card{padding:28px 32px}.post-meta{color:var(--muted);flex-wrap:wrap;align-items:baseline;gap:8px;font-size:13px;display:flex}.post-card h3{letter-spacing:-.03em;margin:12px 0 10px;font-size:22px;line-height:1.45}.post-summary{white-space:pre-line}.tag-list{flex-wrap:wrap;gap:8px;margin-top:20px;display:flex}.tag-list li{color:#315baf;background:#edf3ff;border-radius:6px;max-width:100%;padding:3px 10px;font-size:12px}.pagination{justify-content:center;align-items:center;gap:24px;padding:28px 0;font-size:14px;display:flex}.page-link{background:var(--surface);border:1px solid var(--line);border-radius:8px;min-height:44px;padding:10px 14px}.page-link:not(.disabled):hover,.button:hover{border-color:var(--accent);color:var(--accent)}.disabled{color:#718096;background:0 0}.list-state{text-align:center;background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:56px 24px}.list-state h2{margin:0 0 12px;font-size:22px}.button{border:1px solid var(--line);border-radius:8px;min-height:44px;margin-top:24px;padding:10px 20px;font-weight:600;display:inline-block}.loading-dot{background:var(--accent);border-radius:50%;width:10px;height:10px;margin-right:12px;display:inline-block}.site-footer{text-align:center;color:var(--muted);padding:32px 24px;font-size:12px}@media (max-width:600px){.header-inner{padding:16px 20px}.page-shell{padding:0 16px}.intro{padding:28px 4px 24px}.header-nav{margin-left:8px}.header-label{font-size:12px}.post-card{padding:24px 20px}.post-card h3{font-size:20px}.pagination{gap:12px;font-size:13px}.list-heading{padding-left:4px;padding-right:4px}}.search-panel{border:1px solid var(--line);background:var(--surface);border-radius:12px;margin-bottom:28px;padding:20px}.search-form{flex-wrap:wrap;align-items:end;gap:12px;display:flex}.search-field{flex:160px;min-width:0}.search-field:first-child{flex:2}.search-field label{margin-bottom:6px;font-size:13px;font-weight:700;display:block}.search-field input,.search-field select{border:1px solid var(--line);background:var(--surface);width:100%;min-width:0;min-height:44px;color:var(--text);font:inherit;border-radius:8px;padding:10px 12px;font-size:16px}.search-submit{background:var(--accent);color:#fff;min-height:44px;font:inherit;cursor:pointer;border:0;border-radius:8px;padding:10px 22px}.search-reset{min-height:44px;padding:10px;font-size:14px}.search-help{margin-top:12px;font-size:12px}.search-help a{text-decoration:underline}input:focus-visible,select:focus-visible,button:focus-visible{outline:3px solid var(--accent);outline-offset:3px}@media (max-width:600px){.search-panel{padding:16px}.search-field,.search-field:first-child{flex-basis:100%}}.tag-picker{min-width:0;position:relative}.tag-trigger{border:1px solid var(--line);width:100%;min-width:0;min-height:44px;color:var(--text);font:inherit;text-align:left;cursor:pointer;background:#fff;border-radius:8px;justify-content:space-between;align-items:center;gap:8px;padding:10px 12px;font-size:16px;display:flex}.tag-trigger>span:first-child{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.tag-trigger>span:last-child{flex-shrink:0}.tag-trigger:disabled{opacity:.6;cursor:default}.tag-options{z-index:5;border:1px solid var(--line);background:#fff;border-radius:10px;width:100%;max-height:280px;padding:6px;position:absolute;top:calc(100% + 6px);left:0;overflow-y:auto;box-shadow:0 8px 24px #17243d18}.tag-options button{width:100%;min-height:44px;color:var(--text);font:inherit;text-align:left;overflow-wrap:anywhere;cursor:pointer;background:#fff;border:0;border-radius:6px;justify-content:space-between;gap:8px;padding:10px;font-size:14px;display:flex}.tag-options button[aria-pressed=true],.tag-options button:hover{color:#285cde;background:#edf3ff}.post-card h3 a:hover{color:var(--accent)}.detail-shell{padding-top:28px}.detail-back{color:var(--muted);margin-bottom:20px;font-size:14px;display:block}.post-detail{border:1px solid var(--line);background:#fff;border-radius:16px;padding:40px}.post-detail>header{border-bottom:1px solid var(--line);padding-bottom:28px}.post-body{padding-top:28px}.text-block{margin:24px 0}.text-block p{white-space:pre-wrap;color:var(--text)}.code-block{border:1px solid var(--line);border-radius:10px;min-width:0;margin:28px 0;overflow:hidden}.code-heading{overflow-wrap:anywhere;background:#edf3ff;justify-content:space-between;align-items:center;gap:12px;padding:12px 16px;font-size:14px;display:flex}.code-heading button{border:1px solid var(--line);min-height:36px;color:var(--text);cursor:pointer;background:#fff;border-radius:6px;flex-shrink:0;padding:6px 10px}.code-block pre{background:#f7f9fc;margin:0;padding:20px;font-size:14px;line-height:1.8;overflow-x:auto}.code-block pre:focus-visible{outline:3px solid var(--accent);outline-offset:-3px}.copy-status:not(:empty){padding:8px 16px;font-size:12px}@media (max-width:600px){.post-detail{padding:24px 20px}}.header-nav{color:var(--muted);gap:24px}.header-nav a[aria-current=page]{color:var(--accent)}.project-status{color:#285cde;background:#edf3ff;border-radius:6px;padding:3px 10px;font-size:12px}.project-status.completed{color:#216445;background:#e8f5ef}@media (max-width:600px){.header-inner{flex-wrap:wrap;gap:12px}.header-nav{gap:16px}.header-label{display:none}}.project-search-form .search-field:first-child{flex:2 240px}@media (max-width:600px){.project-search-form .search-field:first-child{flex-basis:100%}}.related-posts{margin-top:36px}.project-period{margin-top:20px;font-size:14px}.feature-list{padding-left:24px}.feature-list li{overflow-wrap:anywhere;padding:8px 0}.feature-list h3{margin:0 0 8px}.project-links{flex-wrap:wrap;gap:12px;margin:0;padding:0;list-style:none;display:flex}.project-links li{max-width:100%}.project-links a{min-height:44px;color:var(--accent);overflow-wrap:anywhere;background:#edf3ff;border-radius:8px;padding:10px 16px;display:block}.sr-only{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.explore-tags{border:1px solid var(--line);background:#fff;border-radius:16px;flex-wrap:wrap;gap:12px;margin:0;padding:24px;list-style:none;display:flex}.explore-tags li{max-width:100%}.explore-tags a{min-height:44px;color:var(--accent);overflow-wrap:anywhere;background:#edf3ff;border-radius:8px;flex-wrap:wrap;gap:8px;padding:10px 16px;display:flex}.classification-note{color:var(--muted);font-size:12px}.category-groups{border:1px solid var(--line);background:#fff;border-radius:16px;margin:0;padding:0;list-style:none}.category-groups>li{padding:24px 28px}.category-groups>li+li{border-top:1px solid var(--line)}.category-groups h2{margin:0;font-size:20px}.category-groups h2 a{padding:6px 0;display:inline-block}.category-groups ul{flex-wrap:wrap;gap:12px;margin:12px 0 0;padding:0;list-style:none;display:flex}.category-groups ul li{max-width:100%}.category-groups ul a{min-height:44px;color:var(--accent);overflow-wrap:anywhere;background:#edf3ff;border-radius:8px;flex-wrap:wrap;gap:8px;padding:10px 12px;display:flex}@media (max-width:600px){.header-nav{flex-basis:100%;justify-content:space-between;margin-left:0}.category-groups>li{padding:20px}}.table-block{border:1px solid var(--line);background:#fff;border-radius:10px;min-width:0;margin:28px 0;overflow:hidden}.table-block-heading{background:#edf3ff;padding:16px 20px}.table-block-heading h2{margin:0;font-size:18px}.table-block-heading p{margin-top:4px;font-size:13px}.table-scroll{overscroll-behavior-x:contain;width:100%;max-width:100%;overflow-x:auto}.table-scroll:focus-visible{outline:3px solid var(--accent);outline-offset:-3px}.table-scroll table{border-collapse:collapse;width:100%;min-width:680px;font-size:14px}.table-scroll caption{clip:rect(0,0,0,0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.table-scroll th,.table-scroll td{border-bottom:1px solid var(--line);text-align:left;vertical-align:top;overflow-wrap:anywhere;max-width:320px;padding:11px 14px}.table-scroll thead th{background:#f7f9fc;font-weight:700}.table-scroll tbody th{font-weight:650}.table-scroll tr:last-child>*{border-bottom:0}.table-spec-intro{margin-bottom:24px}.table-editor-layout{grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:start;gap:24px;display:grid}.table-editor,.table-live-preview{border:1px solid var(--line);background:#fff;border-radius:12px;min-width:0;padding:20px}.table-editor-field{min-width:0;margin-bottom:14px}.table-editor-field label{margin-bottom:5px;font-size:13px;font-weight:700;display:block}.table-editor-field input,.table-editor-field textarea{border:1px solid var(--line);width:100%;min-height:44px;color:var(--text);font:inherit;background:#fff;border-radius:7px;padding:9px 11px;display:block}.table-editor-field textarea{resize:vertical;min-height:72px}.table-editor-columns-heading{justify-content:space-between;align-items:center;gap:12px;margin:24px 0 12px;display:flex}.table-editor-columns-heading h2,.table-live-preview>h2{margin:0;font-size:18px}.table-editor-columns-heading button,.table-remove-column{border:1px solid var(--line);min-height:40px;color:var(--text);font:inherit;cursor:pointer;background:#fff;border-radius:7px;padding:7px 12px}.table-editor-columns-heading button:disabled,.table-remove-column:disabled{opacity:.55;cursor:default}.table-column-editor{border:1px solid var(--line);border-radius:8px;min-width:0;margin:0 0 14px;padding:14px}.table-column-editor legend{padding:0 6px;font-weight:700}.table-editor-check{align-items:center;gap:7px;min-height:40px;margin:0 16px 10px 0;font-size:14px;display:inline-flex}.table-editor-check input{width:18px;height:18px}.table-remove-column{color:#8c3030;width:100%}.table-editor-error{color:#8c3030;background:#fff0ef;border-radius:7px;margin:10px 0;padding:10px;font-size:13px}.table-editor-note,.table-preview-invalid{margin-top:14px;font-size:12px}.table-live-preview{overflow:hidden}.table-live-preview>.table-block{margin-top:12px}.table-preview-invalid{border:1px dashed var(--line);border-radius:8px;padding:16px}.table-spec-json{border:1px solid var(--line);background:#fff;border-radius:12px;min-width:0;margin-top:20px;padding:20px}.table-spec-json h2{margin:0 0 12px;font-size:18px}.table-spec-json p{font-size:13px}.table-spec-json pre{overflow-wrap:anywhere;white-space:pre-wrap;background:#f7f9fc;border-radius:8px;max-width:100%;margin:0;padding:16px;font-size:12px;overflow:auto}@media (max-width:760px){.table-editor-layout{grid-template-columns:minmax(0,1fr)}}.architecture-block{background:#fbfcfe;border:1px solid #d9e0e9;border-radius:14px;min-width:0;margin:0;overflow:hidden}.architecture-heading{background:#edf3ff;padding:16px 20px}.architecture-heading h2{margin:0;font-size:18px}.architecture-heading p{color:#526075;margin:4px 0 0;font-size:13px}.architecture-scroll{overscroll-behavior:contain;background-color:#f9fbfd;background-image:radial-gradient(#dce3ec 1px,#0000 1px);background-size:20px 20px;width:100%;max-width:100%;overflow:auto}.architecture-scroll:focus-visible{outline:3px solid var(--accent);outline-offset:-3px}.architecture-svg{touch-action:pan-x pan-y;min-width:100%;max-width:none;display:block}.arch-group{fill:#ebf2ffa6;stroke:#9eb1cb;stroke-width:1.5px;stroke-dasharray:7 5}.arch-group-docker{fill:#e7f4ebd1;stroke:#7aaa87;stroke-dasharray:4 4}.arch-group-custom{fill:#f4eeffb3;stroke:#a892ce}.arch-group-label{fill:#334258;font-size:13px;font-weight:750}.arch-edge{fill:none;stroke:#77859a;stroke-width:2px}.arch-edge-label{fill:#536177;text-anchor:middle;paint-order:stroke;stroke:#f9fbfd;stroke-width:5px;stroke-linejoin:round;font-size:11px}.arch-node{stroke:#bac6d5;stroke-width:1.4px;filter:drop-shadow(0 2px 3px #1f30491a)}.arch-node-type{fill:#617187;text-anchor:middle;font-size:10px}.arch-node-label{fill:#1e2b3d;text-anchor:middle;font-size:12px;font-weight:750}.arch-tech-icon{pointer-events:none}.arch-node-wrap{outline:none}.arch-node-wrap.arch-node-draggable{cursor:grab}.arch-node-wrap.arch-node-draggable:active{cursor:grabbing}.arch-node-wrap:focus-visible .arch-node,.arch-node-wrap.is-selected .arch-node{stroke:#446fe0;stroke-width:3px}.architecture-description{border-top:1px solid var(--line);grid-template-columns:minmax(110px,1fr) 3fr;gap:8px 18px;padding:16px 20px;font-size:13px;display:grid}.architecture-description h3{margin:0;font-size:13px}.architecture-description ul,.architecture-description ol{margin:0;padding-left:20px}.architecture-description li{overflow-wrap:anywhere;margin-bottom:4px}.architecture-description p{margin:0}.architecture-editor-layout{grid-template-columns:minmax(210px,248px) minmax(0,1fr) minmax(224px,260px);align-items:start;gap:14px;display:grid}.architecture-palette,.architecture-inspector,.architecture-canvas-panel{background:#fff;border:1px solid #dce2eb;border-radius:14px;min-width:0;box-shadow:0 5px 20px #1c2d480b}.architecture-palette,.architecture-inspector{padding:16px}.architecture-panel-title,.architecture-canvas-toolbar{justify-content:space-between;align-items:center;gap:8px;display:flex}.architecture-panel-title h2,.architecture-canvas-toolbar h2{letter-spacing:-.02em;margin:2px 0 0;font-size:17px}.architecture-eyebrow{color:#8090a5;letter-spacing:.12em;font-size:9px;font-weight:800}.architecture-count{color:#65748a;background:#f0f3f8;border-radius:6px;padding:4px 7px;font-size:10px;font-weight:750}.architecture-palette>p{color:#77869a;margin:12px 0 14px;font-size:11px}.architecture-tech-grid{gap:6px;display:grid}.architecture-tech-grid button{color:#26364a;text-align:left;min-height:39px;font:inherit;cursor:pointer;background:#f7f9fc;border:1px solid #0000;border-radius:8px;grid-template-columns:30px 1fr 14px;align-items:center;gap:9px;padding:5px 8px;font-size:11px;font-weight:650;display:grid}.architecture-tech-grid button:hover,.architecture-group-list button:hover{background:#f0f4fa;border-color:#c9d5e6}.architecture-tech-mark{color:#3e5e9a;background:#fff;border-radius:7px;place-items:center;width:28px;height:28px;font-size:10px;font-weight:850;display:grid;box-shadow:0 1px 3px #182b4412}.tech-spring{color:#438b48}.tech-postgresql{color:#39658e}.tech-redis{color:#c95151}.tech-docker{color:#168ab6}.tech-oracle_cloud{color:#bb3838}.tech-aws{color:#c80}.tech-cloudflare,.tech-workers{color:#d8792c}.tech-r2{color:#b47e1e}.tech-react{color:#1494b8}.tech-nodejs{color:#498543}.tech-nginx{color:#3a8b62}.architecture-custom-add,.architecture-connect-button,.architecture-group-buttons button{color:#475a73;width:100%;min-height:36px;font:inherit;cursor:pointer;background:#fff;border:1px solid #dce2eb;border-radius:8px;font-size:11px;font-weight:700}.architecture-custom-add{border-style:dashed;margin-top:7px}.architecture-palette-section{border-top:1px solid #edf0f4;margin-top:20px;padding-top:16px}.architecture-group-buttons{grid-template-columns:1fr 1fr;gap:5px;margin-top:11px;display:grid}.architecture-group-buttons button{min-height:31px;padding:4px;font-size:10px}.architecture-group-list{gap:3px;margin-top:8px;display:grid}.architecture-group-list button{text-align:left;color:#526177;font:inherit;cursor:pointer;background:0 0;border:1px solid #0000;border-radius:7px;align-items:center;gap:8px;padding:7px;font-size:11px;display:flex}.architecture-group-list button.active{color:#274d9a;background:#f2f6ff;border-color:#c8d7f8}.group-dot{background:#81a1d0;border-radius:3px;width:8px;height:8px}.group-docker{background:#67a880}.group-custom{background:#a78bca}.architecture-connect-button{margin:12px 0 8px}.architecture-connect-button.active{color:#3256a7;background:#eff4ff;border-color:#6686dc}.architecture-edge-list{gap:5px;max-height:230px;margin:0;padding:0;list-style:none;display:grid;overflow:auto}.architecture-edge-list li{color:#64738a;background:#f7f9fc;border-radius:6px;justify-content:space-between;align-items:center;gap:4px;padding:6px;font-size:9px;display:flex}.architecture-edge-list li span{overflow-wrap:anywhere}.architecture-edge-list b{color:#8996a8}.architecture-edge-list button{color:#8692a3;cursor:pointer;background:0 0;border:0;border-radius:5px;flex:0 0 22px;width:22px;height:22px;font-size:17px}.architecture-canvas-panel{overflow:hidden}.architecture-canvas-toolbar{border-bottom:1px solid #e8edf3;min-height:58px;padding:9px 14px}.architecture-canvas-help{color:#8290a2;text-align:right;font-size:9px}.architecture-canvas-panel .architecture-block{box-shadow:none;border:0;border-radius:0}.architecture-canvas-panel .architecture-scroll{min-height:420px;max-height:min(66vh,680px)}.architecture-canvas-panel .architecture-svg{min-width:unset}.architecture-canvas-status{color:#77869a;border-top:1px solid #e8edf3;min-height:31px;padding:8px 13px;font-size:10px}.architecture-inspector label{color:#65748a;gap:5px;margin-top:15px;font-size:10px;font-weight:750;display:grid}.architecture-inspector input,.architecture-inspector select{color:#29384d;width:100%;min-width:0;height:36px;font:inherit;background:#fff;border:1px solid #dce2eb;border-radius:7px;padding:6px 8px;font-size:11px}.architecture-inspector-icon{color:#73839b;background:#f1f4f9;border-radius:8px;place-items:center;width:30px;height:30px;display:grid}.architecture-coordinate-fields{grid-template-columns:1fr 1fr;gap:8px;display:grid}.architecture-inspector .architecture-delete{color:#a14646;width:100%;min-height:34px;font:inherit;cursor:pointer;background:snow;border:1px solid #f0d6d4;border-radius:7px;margin-top:20px;font-size:10px;font-weight:750}.architecture-empty-inspector{color:#8491a2;margin:16px 0 0;font-size:11px;line-height:1.6}.architecture-editor-error{color:#8c3030;background:#fff0ef;border-radius:7px;grid-column:1/-1;padding:10px;font-size:13px}.architecture-editor-note{color:#8894a3;grid-column:1/-1;margin:0;font-size:10px}.architecture-json-panel{border:1px solid var(--line);background:#fff;border-radius:12px;margin-top:20px;padding:18px}.architecture-json-panel h2{margin:0 0 10px;font-size:18px}.architecture-json-panel pre{overflow-wrap:anywhere;white-space:pre-wrap;max-width:100%;font-size:12px;overflow:auto}@media (max-width:1050px){.architecture-editor-layout{grid-template-columns:minmax(190px,230px) minmax(0,1fr)}.architecture-inspector{grid-column:1/-1}}@media (max-width:680px){.architecture-editor-layout{grid-template-columns:minmax(0,1fr);gap:10px}.architecture-palette{order:1}.architecture-canvas-panel{order:2}.architecture-inspector{order:3;grid-column:auto}.architecture-panel-title h2,.architecture-canvas-toolbar h2{font-size:15px}.architecture-palette,.architecture-inspector{padding:13px}.architecture-tech-grid{grid-template-columns:1fr 1fr}.architecture-tech-grid button{grid-template-columns:26px 1fr;font-size:10px}.architecture-tech-grid button>:last-child{display:none}.architecture-canvas-help{max-width:115px;font-size:8px}.architecture-canvas-panel .architecture-scroll{min-height:360px;max-height:58vh}}.architecture-tech-grid button{font-size:13px}.architecture-group-list button,.architecture-edge-list li,.architecture-canvas-help,.architecture-inspector label,.architecture-inspector input,.architecture-inspector select,.architecture-group-buttons button,.architecture-custom-add,.architecture-connect-button,.architecture-canvas-status,.architecture-empty-inspector{font-size:12px}.architecture-dev{max-width:1480px}@media (max-width:680px){.architecture-tech-grid button{font-size:12px}.architecture-canvas-help{font-size:10px}}.arch-node-draggable{touch-action:none}.architecture-edge-select{overflow-wrap:anywhere;color:#526177;text-align:left;min-width:0;font:inherit;font-size:inherit;cursor:pointer;background:0 0;border:0;padding:2px}.architecture-edge-select:hover{color:#3159a4}@media (max-width:680px){.architecture-canvas-help{font-size:12px}}.architecture-auto-layout{color:#344c70;min-height:36px;font:inherit;cursor:pointer;background:#fff;border:1px solid #dce2eb;border-radius:8px;padding:6px 12px;font-size:12px}.architecture-canvas-toolbar{flex-wrap:wrap}.architecture-json-panel summary{cursor:pointer;color:#65748a;font-size:13px}.architecture-edge-list .architecture-edge-select{text-align:left;overflow-wrap:anywhere;flex:1;width:auto;min-width:0;height:auto;font-size:12px}.architecture-canvas-fit .architecture-svg{width:100%;min-width:580px;height:auto}.arch-group-wrap.is-interactive .arch-group{cursor:grab;pointer-events:all}.arch-group-wrap.is-interactive .arch-group:active{cursor:grabbing}.arch-group-wrap.is-interactive.is-selected .arch-group,.arch-group-wrap.is-interactive:hover .arch-group{stroke:#446fe0;stroke-width:2.5px}.arch-group-wrap .arch-group-label{-webkit-user-select:none;user-select:none}.arch-group-wrap.is-interactive .arch-group-label{cursor:grab;outline:none}.arch-group-wrap.is-interactive .arch-group-label:focus-visible{fill:#244d9c;text-decoration:underline}.arch-connect-handle{cursor:crosshair;opacity:0;outline:none;transition:opacity .12s}.arch-connect-handle:hover,.arch-connect-handle:focus-visible{opacity:1}.arch-connect-hit{fill:#0000;pointer-events:all}.arch-connect-dot{fill:#fff;stroke:#4770d6;stroke-width:2.5px;pointer-events:none}.arch-connect-handle:focus-visible .arch-connect-dot,.arch-connect-handle.is-connecting .arch-connect-dot{fill:#4770d6;stroke:#fff}.arch-group-resize{cursor:nwse-resize;opacity:.65;outline:none}.arch-group-wrap:hover .arch-group-resize,.arch-group-wrap.is-selected .arch-group-resize,.arch-group-resize:focus-visible{opacity:1}.arch-group-resize-hit{fill:#fff;stroke:#6686dc;stroke-width:1.5px}.arch-group-resize-mark{fill:none;stroke:#4669c4;stroke-width:1.5px;pointer-events:none}.arch-group-resize:focus-visible .arch-group-resize-hit{fill:#eaf0ff;stroke-width:2.5px}.arch-group-wrap.is-interactive,.arch-group-resize,.arch-connect-handle{touch-action:none}.arch-edge-wrap{outline:none}.arch-edge-wrap[role=button]{cursor:pointer}.arch-edge-hit{fill:none;stroke:#0000;stroke-width:14px;vector-effect:non-scaling-stroke;pointer-events:stroke}.arch-edge-wrap.is-selected .arch-edge{stroke:#416fe0;stroke-width:3px}.arch-edge-wrap:focus-visible .arch-edge{stroke:#3159a4;stroke-width:3px}.arch-edge-controls{pointer-events:none}.arch-edge-controls>g{pointer-events:auto}.arch-edge-waypoint{cursor:move;outline:none}.arch-edge-waypoint-hit{fill:#fff;stroke:#5478d2;stroke-width:1.5px}.arch-edge-waypoint-dot{fill:#5478d2;pointer-events:none}.arch-edge-waypoint:focus-visible .arch-edge-waypoint-hit{fill:#eaf0ff;stroke-width:2.5px}.arch-edge-toolbar{pointer-events:none}.arch-edge-toolbar>rect{fill:#fff;stroke:#cbd5e4;stroke-width:1px;filter:drop-shadow(0 2px 4px #1b2d451e)}.arch-edge-toolbar>text{fill:#465773;pointer-events:none;font-size:10px;font-weight:700}.arch-edge-delete{cursor:pointer;pointer-events:auto;outline:none}.arch-edge-delete circle{fill:#fff4f3;stroke:#e6c4c1}.arch-edge-delete path{fill:none;stroke:#a84c47;stroke-width:1.5px;pointer-events:none}.arch-edge-delete:focus-visible circle{fill:#ffe2df;stroke-width:2px}.arch-edge-endpoint-handle{cursor:crosshair;outline:none}.arch-edge-endpoint-handle circle{fill:#fff;stroke:#5478d2;stroke-width:2px}.arch-edge-endpoint-handle.source circle{fill:#5478d2}.arch-edge-endpoint-handle:focus-visible circle{stroke:#243f87;stroke-width:3px}.arch-edge-waypoint,.arch-edge-endpoint-handle{touch-action:none}.architecture-edge-disclosure summary{cursor:pointer;color:#65748a;margin-top:12px;font-size:12px}.post-editor{color:#17243d;gap:24px;display:grid}.post-editor-fields{gap:16px;display:grid}.post-editor-fields label,.post-editor-block-fields>label,.post-editor-code-meta label{color:#34435d;gap:7px;font-size:14px;font-weight:650;display:grid}.post-editor-fields label>span{color:#748198;justify-self:end;margin-bottom:-25px;font-size:12px;font-weight:400}.post-editor input,.post-editor textarea,.post-editor select{color:#17243d;width:100%;min-width:0;font:inherit;background:#fff;border:1px solid #dce4ef;border-radius:9px;padding:11px 12px;font-weight:400}.post-editor textarea{resize:vertical;line-height:1.65}.post-editor input:focus-visible,.post-editor textarea:focus-visible,.post-editor select:focus-visible,.post-editor button:focus-visible{outline-offset:2px;outline:3px solid #9bb6ff}.post-editor [aria-invalid=true]{border-color:#bc4b52}.post-editor-block-heading,.post-editor-block-row,.post-editor-footer{justify-content:space-between;align-items:center;gap:12px;display:flex}.post-editor-block-heading h2{margin:0;font-size:19px}.post-editor-block-heading p{color:#748198;margin:5px 0 0;font-size:13px}.post-editor-add{flex-wrap:wrap;gap:7px;display:flex}.post-editor button{color:#344c70;min-height:36px;font:inherit;cursor:pointer;background:#fff;border:1px solid #dce4ef;border-radius:8px;padding:6px 10px;font-size:13px}.post-editor button:hover:not(:disabled){background:#f4f7ff;border-color:#8ba8ed}.post-editor button:disabled{cursor:not-allowed;opacity:.48}.post-editor-block-list{gap:12px;margin:0;padding:0;list-style:none;display:grid}.post-editor-block-list>li{background:#fff;border:1px solid #e1e8f1;border-radius:12px;min-width:0;overflow:hidden}.post-editor-block-row{background:#f7f9fc;border-bottom:1px solid #e7edf6;padding:10px 12px}.post-editor-block-row>button:first-child{background:0 0;border-color:#0000;font-weight:700}.post-editor-block-row>div{gap:5px;display:flex}.post-editor-invalid-mark{color:#a83e44;font-weight:500}.post-editor-block-fields{gap:14px;padding:14px;display:grid}.post-editor-block-fields[hidden]{display:none}.post-editor-code-meta{grid-template-columns:minmax(140px,.45fr) minmax(180px,1fr);gap:12px;display:grid}.post-editor-preview{border-top:1px solid #edf1f7;min-width:0;padding-top:12px;overflow:auto}.post-editor-preview>h3{color:#748198;margin:0 0 9px;font-size:12px}.post-editor-text-preview{color:#34435d;white-space:pre-wrap;overflow-wrap:anywhere;min-height:48px;line-height:1.75}.post-editor-errors{color:#8d3036;background:#fff7f6;border:1px solid #edc9c9;border-radius:9px;padding:12px 16px;font-size:13px}.post-editor-errors p{margin:0 0 6px;font-weight:700}.post-editor-errors ul{margin:0;padding-left:19px}.post-editor-footer{color:#748198;background:#fffffff2;border:1px solid #e4eaf3;border-radius:10px;padding:12px;font-size:13px;position:sticky;bottom:0}.post-editor-footer button{color:#fff;background:#356dff;border-color:#356dff;min-width:132px;font-weight:700}.post-editor-footer button:hover:not(:disabled){color:#fff;background:#285bdc}@media (max-width:680px){.post-editor-block-heading,.post-editor-footer{flex-direction:column;align-items:stretch}.post-editor-code-meta{grid-template-columns:1fr}.post-editor-add{grid-template-columns:1fr 1fr;display:grid}.post-editor-add button{width:100%}}.writer-shell{max-width:1440px;padding-bottom:40px}.writer-status{flex-wrap:wrap;justify-content:space-between;gap:16px;margin-bottom:24px;display:flex}.naver-login{color:#fff;background:#03c75a;border:0}fieldset{min-width:0}@media (max-width:600px){.header-inner{flex-wrap:wrap}.header-nav{gap:8px}.header-label{margin-left:auto}}.post-editor .table-editor-layout{display:block}.post-editor .table-live-preview{display:none}.post-editor>div:first-child{gap:24px;min-width:0;display:grid}.post-editor-fields label{grid-template-columns:minmax(0,1fr) auto;align-items:center}.post-editor-fields label>span{margin:0}.post-editor-fields input,.post-editor-fields textarea{grid-column:1/-1}.post-editor>div:first-child[hidden]{display:none}.publish-review{grid-template-columns:minmax(0,1fr);gap:24px;min-width:0;display:grid}.publish-review .post-detail{min-width:0}.publish-review>h2{margin:0}.publish-options{border:0;grid-template-columns:1fr 1fr;gap:12px;margin:0;padding:0;display:grid}.publish-options legend{margin-bottom:12px;font-weight:700}.publish-options label{border:1px solid var(--line);cursor:pointer;background:#fff;border-radius:12px;align-items:flex-start;gap:12px;padding:18px;display:flex}.publish-options label:has(input:checked){border-color:var(--accent);background:#edf3ff}.publish-options input{width:20px;min-width:20px;accent-color:var(--accent);margin-top:4px}.publish-options small{color:var(--muted);font-size:13px;display:block}.post-editor-actions{flex-wrap:wrap;gap:12px;display:flex}.post-editor-footer button.secondary{color:var(--accent);border-color:var(--line);background:#fff}.writer-public-link{margin:0 0 24px}@media (max-width:680px){.publish-options{grid-template-columns:1fr}.publish-review .post-detail{padding:20px}.post-editor-actions{grid-template-columns:1fr 1fr;display:grid}.post-editor-actions button{min-width:0}}.post-classification{color:#17243d;gap:20px;min-width:0;display:grid}.post-classification-field{gap:8px;min-width:0;display:grid}.post-classification-field>label{color:#34435d;font-size:14px;font-weight:650}.post-classification-field>input,.post-classification-field>select{color:#17243d;width:100%;min-width:0;font:inherit;background:#fff;border:1px solid #dce4ef;border-radius:9px;padding:11px 12px}.post-classification-field>input:focus-visible,.post-classification-field>select:focus-visible,.post-classification-tags input:focus-visible,.post-classification-help button:focus-visible{outline-offset:2px;outline:3px solid #9bb6ff}.post-classification-help,.post-classification-selected{color:#748198;overflow-wrap:anywhere;margin:0;font-size:13px;line-height:1.5}.post-classification-help button{color:#285bdc;font:inherit;cursor:pointer;background:0 0;border:0;padding:0;text-decoration:underline}.post-classification-tags{flex-wrap:wrap;gap:8px;max-height:220px;padding:2px;display:flex;overflow:auto}.post-classification-tag{color:#34435d;cursor:pointer;background:#fff;border:1px solid #dce4ef;border-radius:18px;align-items:center;gap:7px;max-width:100%;min-height:36px;padding:6px 10px;font-size:13px;display:inline-flex}.post-classification-tag span{overflow-wrap:anywhere}.post-classification-tag:has(input:checked){color:#234da8;background:#f4f7ff;border-color:#8ba8ed}.post-editor .post-classification-tag input[type=checkbox]{accent-color:#356dff;flex:0 0 16px;width:16px;height:16px;margin:0;padding:0}.post-classification-tag.is-existing{border-style:dashed}.post-classification-tag input:disabled{cursor:not-allowed}@media (max-width:680px){.post-classification{gap:16px}.post-classification-tags{max-height:180px}.post-classification-tag{min-height:40px}}.personal-blog-layout{grid-template-columns:minmax(220px,280px) minmax(0,1fr);align-items:start;gap:28px;display:grid}.personal-blog-profile{border:1px solid var(--line);overflow-wrap:anywhere;background:#fff;border-radius:16px;padding:24px;position:sticky;top:24px;box-shadow:0 8px 28px #24395d0a}.personal-blog-profile h1{color:#17243d;margin:0 0 12px;font-size:24px;line-height:1.35}.personal-blog-profile p{color:#52627b;margin:6px 0}.personal-blog-profile .personal-blog-handle,.personal-blog-heading>span{color:#748198;font-size:13px}.personal-blog-content{min-width:0}.personal-blog-heading{border-bottom:1px solid var(--line);justify-content:space-between;align-items:end;gap:16px;margin:0 0 18px;padding:0 0 18px;display:flex}.personal-blog-heading .eyebrow{color:#748198;letter-spacing:.12em;margin:0 0 5px;font-size:11px;font-weight:750}.personal-blog-heading h2{color:#17243d;margin:0;font-size:26px}@media (max-width:760px){.personal-blog-layout{grid-template-columns:minmax(0,1fr);gap:18px}.personal-blog-profile{padding:18px;position:static}.personal-blog-profile h1{font-size:21px}.personal-blog-heading{align-items:start}.personal-blog-heading h2{font-size:22px}}.session-links{flex-shrink:0;justify-content:flex-end;align-items:center;gap:16px;font-size:13px;display:flex}.session-links a:hover{color:var(--accent)}.login-action{flex-direction:column;align-items:center;gap:12px;max-width:100%;display:inline-flex}.login-error{color:#973a42;overflow-wrap:anywhere;max-width:440px;font-size:13px;line-height:1.65;display:block}.header-login{border:1px solid var(--line);color:var(--text);font:inherit;cursor:pointer;background:#fff;border-radius:7px;padding:8px 12px}.session-links .login-action{position:relative}.session-links .login-error{border:1px solid var(--line);z-index:8;background:#fff;border-radius:10px;width:min(360px,85vw);padding:16px;position:absolute;top:100%;right:0;box-shadow:0 8px 24px #17243d18}.login-panel{justify-items:center;gap:20px;max-width:540px;margin:40px auto;display:grid}.login-panel .button{margin-top:8px}.login-eyebrow,.home-eyebrow{letter-spacing:.16em;color:var(--accent);font-size:11px;font-weight:700}.home-intro{border-bottom:1px solid var(--line);margin-bottom:28px;padding:62px 0 38px;position:relative}.home-intro h1{margin:18px 0 20px;font-size:clamp(32px,5vw,48px);line-height:1.28}.home-intro>p:not(.home-eyebrow){max-width:520px;font-size:15px}.home-blog-link{color:var(--accent);margin-top:24px;font-size:14px;font-weight:700;display:inline-block}.home-shell .search-panel{background:0 0;border:0;border-radius:0;padding:16px 0}.home-shell .post-list{background:0 0;border:0;border-radius:0}.home-shell .post-card{padding:32px 0}.home-shell .post-card h3{max-width:700px;font-size:25px}.home-shell .post-summary{max-width:680px}.home-shell .tag-list li{border:1px solid var(--line);background:0 0;border-radius:20px}.post-author-link:hover{color:var(--accent);text-decoration:underline}@media (max-width:680px){.session-links{gap:12px;margin-left:auto}.home-intro{padding:36px 0 28px}.home-shell .post-card{padding:24px 4px}.home-shell .post-card h3{font-size:22px}.header-nav{flex-basis:100%;order:3;justify-content:space-between;margin-left:0}.login-panel{margin:12px auto}}.blog-owner-actions{flex-wrap:wrap;gap:10px;margin-top:24px;display:flex}.blog-owner-actions a{border:1px solid var(--line);color:var(--accent);background:#fff;border-radius:8px;padding:8px 12px;font-size:13px}.personal-blog-layout{padding-top:36px}.personal-blog-content .post-list{background:0 0;border:0;border-radius:0}.personal-blog-content .post-card{padding:28px 0}@media (max-width:760px){.personal-blog-layout{padding-top:24px}.personal-blog-content .post-card{padding:24px 4px}}.comments-panel{border-top:1px solid var(--line);margin:48px 0;padding-top:28px}.comment-list{margin:0;padding:0;list-style:none}.comment-list>li{border-bottom:1px solid var(--line);padding:24px 0}.comment-meta{color:var(--muted);flex-wrap:wrap;align-items:center;gap:12px;font-size:12px;display:flex}.comment-meta strong{color:var(--text)}.comment-body{white-space:pre-wrap;overflow-wrap:anywhere;margin:14px 0;font-size:14px;line-height:1.8}.comment-actions{flex-wrap:wrap;align-items:center;gap:10px;margin-top:12px;font-size:12px;display:flex}.comment-form{margin-top:24px}.comments-panel form>label:not(.comment-secret){margin:12px 0;font-size:14px;display:block}.comments-panel textarea{box-sizing:border-box;border:1px solid var(--line);background:var(--surface);width:100%;font:inherit;resize:vertical;border-radius:4px;min-height:110px;padding:12px;font-size:16px}.comment-count,.comment-help{color:var(--muted);font-size:12px}.comment-count{text-align:right}.comment-secret{align-items:center;gap:8px;min-height:44px;font-size:13px;display:flex}.comment-secret input{width:16px;height:16px}.comment-login{padding-top:20px}.comments-panel .button{min-height:44px}.linked-project{border:1px solid var(--line);overflow-wrap:anywhere;border-radius:12px;gap:.5rem;min-width:0;margin-block:2rem;padding:1.25rem;display:grid}.linked-project>span{color:var(--muted);font-size:.8rem}.linked-project>a{font-size:1.1rem;font-weight:600}.linked-project>p{margin:0;font-size:.9rem;line-height:1.6}.like-panel{border-block:1px solid var(--line);margin-block:2rem;padding-block:1rem}.like-actions,.like-login{flex-wrap:wrap;align-items:center;gap:.75rem;display:flex}.like-actions .button,.like-login .button{margin-top:0}.like-button[aria-pressed=true]{color:var(--accent);border-color:var(--accent)}.like-panel>p,.like-login{margin-top:.75rem}.list-like-count{white-space:nowrap;align-items:center;gap:.2rem;display:inline-flex}.blog-board-nav{gap:.25rem;margin-top:1.5rem;display:grid}.blog-board-nav a{overflow-wrap:anywhere;border-radius:.5rem;padding:.5rem}.blog-board-nav a[aria-current=page]{background:var(--surface);color:var(--accent);font-weight:600}.board-management{gap:1.5rem;margin-top:1.5rem;display:grid}.board-management form{gap:.75rem;display:grid}.board-row{overflow-wrap:anywhere;flex-wrap:wrap;align-items:center;gap:.75rem;margin-block:.5rem;display:flex}.board-row .button{margin-top:0}.content-management,.content-media{border:1px solid var(--border,#ddd);overflow-wrap:anywhere;border-radius:12px;margin-block:1.5rem;padding:1rem}.content-management form,.content-media-upload,.content-media-list li{flex-wrap:wrap;align-items:center;gap:.75rem;display:flex}.content-management input{width:6rem;max-width:100%}.content-media label{gap:.35rem;max-width:100%;display:grid}.content-media input,.content-media select{min-width:0;max-width:100%}.content-media img{max-width:100%;height:auto}.content-media-list{padding:0;list-style:none}.content-media-list li{padding-block:1rem}.content-media-list li p{flex-basis:100%}.content-thumbnail{object-fit:contain;border-radius:10px;width:100%;max-height:24rem;margin-block:1rem;display:block}.public-project-media-list{gap:1rem;display:grid}.public-project-media figure{margin:0}.public-project-media img{max-width:100%;height:auto;display:block}.public-project-media figcaption{margin-top:.5rem}
:root{--background:#fafaf8;--surface:#fff;--text:#242721;--muted:#73776f;--line:#e2e5de;--accent:#3657d6}body{letter-spacing:-.025em;-webkit-font-smoothing:antialiased;font-family:-apple-system,BlinkMacSystemFont,Apple SD Gothic Neo,Malgun Gothic,sans-serif}.site-header{background:var(--background);border-bottom:1px solid var(--line)}.header-inner{gap:32px;max-width:1180px;padding:22px 40px}.brand{letter-spacing:-.06em;gap:9px;font-size:25px;font-weight:720}.header-nav{color:var(--muted);gap:28px;margin-left:52px;font-size:14px;font-weight:500}.header-nav a{padding:5px 0;position:relative}.header-nav a[aria-current=page]{color:var(--text);font-weight:650}.header-nav a[aria-current=page]:after{content:"";background:var(--text);height:2px;position:absolute;bottom:-24px;left:0;right:0}.session-links{gap:18px;font-size:12px}.header-login{background:var(--text);color:#fff;border-color:var(--text);border-radius:4px;padding:9px 15px;font-size:12px}.page-shell{max-width:1180px;padding:0 40px}.intro{padding:64px 0 40px}.intro h1{letter-spacing:-.055em;margin:20px 0 22px;font-size:clamp(34px,4vw,54px);font-weight:570;line-height:1.22}.intro h1 span{color:#81867c}.intro>p{font-size:15px;line-height:1.9}.page-eyebrow,.home-eyebrow{letter-spacing:.04em;color:#6a7064!important;font-size:11px!important;font-weight:600!important}.home-intro{margin-bottom:20px;padding:54px 0 36px;position:relative}.home-intro h1{max-width:650px;margin:18px 0 20px;font-size:clamp(36px,4.4vw,54px);font-weight:560;line-height:1.2}.home-intro>p:not(.home-eyebrow){max-width:580px;font-size:15px;line-height:1.9}.home-blog-link{color:var(--text);border-bottom:1px solid var(--text);margin-top:26px;padding-bottom:4px;font-size:12px}.hero-note{border-left:1px solid var(--line);width:250px;padding:28px 0 0 28px;position:absolute;top:80px;right:0}.hero-note-index{letter-spacing:.08em;color:var(--muted);font-family:ui-monospace,SFMono-Regular,monospace;font-size:10px}.hero-note p{color:var(--text);letter-spacing:-.03em;margin:26px 0 32px;font-size:18px;line-height:1.8}.hero-note a{color:var(--muted);font-size:11px}.hero-note a:hover{color:var(--accent)}.home-shell .search-panel,.editorial-shell .search-panel{border:0;border-top:1px solid var(--line);border-bottom:1px solid var(--line);background:0 0;border-radius:0;margin:0 0 40px;padding:20px 0}.home-shell .search-panel{border-top:0}.search-form{gap:18px}.search-field label{color:var(--muted);margin-bottom:8px;font-size:11px;font-weight:550}.search-field input,.search-field select,.tag-trigger{background:0 0;border:0;border-bottom:1px solid #c7cec1;border-radius:0;min-height:40px;padding:8px 2px;font-size:13px}.tag-trigger{gap:12px}.search-submit{background:var(--text);border-radius:4px;min-height:40px;padding:10px 24px;font-size:12px;font-weight:550}.search-help{color:#777d72;margin-top:12px;font-size:10px;line-height:1.6}.search-reset{font-size:12px}.tag-options{border-radius:4px;font-size:12px;box-shadow:0 8px 24px #24272112}.tag-options button{border-radius:2px;font-size:12px}.list-heading{align-items:center;padding:0 0 20px}.list-heading h2{letter-spacing:-.03em;font-size:14px;font-weight:650}.list-heading span{font-size:11px}.home-shell .post-list{background:0 0;border:0;border-radius:0}.home-shell .post-card{grid-template-columns:170px minmax(0,1fr);column-gap:28px;padding:34px 0;display:grid}.home-shell .post-card .post-meta{flex-direction:column;grid-area:1/1/span 3;gap:8px;padding-top:6px;font-size:11px;display:flex}.home-shell .post-card .post-meta>span[aria-hidden]{display:none}.home-shell .post-card h3,.home-shell .post-summary,.home-shell .post-card .tag-list{grid-column:2}.home-shell .post-card h3{letter-spacing:-.04em;margin:0 0 12px;font-size:25px;font-weight:580;line-height:1.45}.home-shell .post-summary{color:#6e7469;max-width:720px;font-size:14px;line-height:1.8}.home-shell .tag-list{margin-top:18px}.tag-list{gap:8px}.tag-list li,.home-shell .tag-list li{color:#6b7660;letter-spacing:0;background:0 0;border:0;border-radius:0;padding:2px 0;font-size:10px}.tag-list li:before{content:"#";color:#b1b8a9;margin-right:2px}.pagination{gap:24px;padding:32px 0 48px;font-size:11px}.page-link{background:0 0;border:0;border-radius:0;min-height:40px;font-size:11px}.page-link.disabled{opacity:.5}.site-footer{border-top:1px solid var(--line);letter-spacing:.035em;margin-top:28px;padding:28px 40px 36px;font-size:10px}.project-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:38px 28px;margin:0;padding:0;list-style:none;display:grid}.project-grid>li,.project-tile{min-width:0}.project-cover-link{background:#e9eee5;border-radius:6px;display:block;overflow:hidden}.project-cover{aspect-ratio:1.8;color:#4c6450;background:#e9eee5;flex-direction:column;justify-content:space-between;padding:20px 22px;display:flex;position:relative;overflow:hidden}.project-cover.project-cover-frontend{color:#4b5a86;background:#e9ecf5}.project-cover-title{display:none}.project-cover-art{stroke:currentColor;stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round}.project-cover-art rect{fill:#ffffff70}.project-cover svg{width:74%;height:80%;transition:transform .25s;position:absolute;top:10%;left:13%}.project-cover-link:hover svg{transform:translateY(-3px)}.project-cover-index,.project-cover-caption{z-index:1;letter-spacing:.1em;font-family:ui-monospace,SFMono-Regular,monospace;font-size:9px;position:relative}.project-cover-caption{letter-spacing:.025em;align-self:flex-end;font-size:11px}.project-tile-body{padding:20px 0 0}.project-tile .post-meta{gap:12px;font-size:10px}.project-tile .project-status{color:#7f856f;background:0 0;border-radius:0;align-items:center;gap:5px;margin-left:auto;padding:0;font-size:10px;display:inline-flex}.project-tile .project-status:before{content:"";background:#bba353;border-radius:50%;width:5px;height:5px}.project-tile .project-status.completed{color:#507353}.project-tile .project-status.completed:before{background:#507353}.project-tile h3{letter-spacing:-.045em;margin:14px 0 10px;font-size:22px;font-weight:580;line-height:1.4}.project-tile h3 a:hover{color:var(--accent)}.project-tile .post-summary{color:#6e7469;font-size:13px;line-height:1.8}.project-tile .tag-list{margin-top:14px}.personal-blog-layout{grid-template-columns:230px minmax(0,1fr);gap:72px;padding-top:60px}.personal-blog-profile{border:0;border-bottom:1px solid var(--line);box-shadow:none;background:0 0;border-radius:0;padding:0 0 28px;top:36px}.personal-blog-profile:before{content:"";background:#dce4d2;border-radius:50%;width:38px;height:38px;margin-bottom:22px;display:block}.personal-blog-profile h1{color:var(--text);letter-spacing:-.055em;font-size:28px;font-weight:560;line-height:1.45}.personal-blog-profile p{color:var(--muted);font-size:12px}.personal-blog-heading{margin:0;padding:0 0 24px}.personal-blog-heading h2{color:var(--text);font-size:17px;font-weight:550}.personal-blog-heading .eyebrow{letter-spacing:.1em;color:var(--muted);margin-bottom:12px;font-size:9px;font-weight:500}.personal-blog-heading>span{font-size:10px}.personal-blog-content .post-card{padding:32px 0}.personal-blog-content .post-meta{color:var(--muted);font-size:10px}.personal-blog-content .post-card h3{letter-spacing:-.045em;margin:12px 0;font-size:25px;font-weight:570;line-height:1.5}.personal-blog-content .post-summary{font-size:13px;line-height:1.9}.blog-owner-actions{gap:16px;margin-top:24px}.blog-owner-actions a{border:0;border-bottom:1px solid var(--line);color:var(--text);background:0 0;border-radius:0;padding:6px 0;font-size:11px}.detail-shell{max-width:980px;padding-top:42px}.detail-back{margin-bottom:32px;font-size:11px}.post-detail{background:0 0;border:0;border-radius:0;padding:0}.post-detail>header{padding:20px 0 32px}.post-detail>header h1{margin:20px 0;font-size:clamp(30px,4vw,44px);font-weight:580;line-height:1.4}.post-detail>header>p{font-size:15px;line-height:1.9}.post-body{padding-top:32px;font-size:15px;line-height:1.95}.list-state{border:1px dashed var(--line);background:0 0;border-radius:4px;padding:52px 24px}.list-state h2{font-size:20px;font-weight:550}.button{border-radius:4px;font-size:12px}.naver-login{color:#fff;background:#03c75a}.explore-tags{background:0 0;border:0;border-radius:0;gap:14px;padding:0}.explore-tags a{border:1px solid var(--line);color:var(--text);background:#fff;border-radius:4px;padding:18px 24px;font-size:14px}.explore-tags a:hover{border-color:var(--text)}.category-groups{background:0 0;border:0;border-radius:0}.category-groups>li{padding:28px 0}.category-groups h2{font-size:24px;font-weight:550}.category-groups ul a{border:1px solid var(--line);color:var(--muted);background:0 0;border-radius:3px;font-size:12px}@media (max-width:1000px){.hero-note{width:200px;padding-left:24px}.home-intro h1{max-width:560px;font-size:52px}.home-intro>p:not(.home-eyebrow){max-width:500px}.header-nav{gap:20px;margin-left:20px}.personal-blog-layout{gap:40px}}@media (max-width:820px){.hero-note{display:none}.home-intro h1{max-width:none}.header-inner{gap:20px}.header-nav{gap:16px;margin-left:0}.session-links{gap:12px}.personal-blog-layout{grid-template-columns:190px minmax(0,1fr);gap:32px}}@media (max-width:760px){.personal-blog-layout{grid-template-columns:minmax(0,1fr);gap:36px}.personal-blog-profile{position:static}.personal-blog-profile:before{margin-bottom:18px}}@media (max-width:680px){.header-inner{gap:16px;padding:18px 22px}.brand{font-size:23px}.brand img{width:24px;height:24px}.header-nav{flex-basis:100%;order:3;justify-content:flex-start;gap:20px;font-size:12px}.header-nav a[aria-current=page]:after{bottom:-19px}.session-links{gap:12px;margin-left:auto;font-size:11px}.header-login{padding:7px 10px;font-size:11px}.page-shell{padding-left:22px;padding-right:22px}.intro{padding:42px 0 30px}.intro h1{margin:18px 0;font-size:38px;line-height:1.3}.intro>p{font-size:13px}.home-intro{padding:44px 0 32px}.home-intro h1{font-size:41px}.home-intro>p:not(.home-eyebrow){font-size:13px}.home-shell .search-panel,.editorial-shell .search-panel{margin-bottom:30px;padding:16px 0 20px}.search-form{gap:14px}.search-field input,.search-field select,.tag-trigger{font-size:16px}.search-help{font-size:10px}.home-shell .post-card{padding:28px 0;display:block}.home-shell .post-card .post-meta{flex-direction:row;gap:10px;margin-bottom:12px;padding:0;font-size:10px}.home-shell .post-card h3{font-size:22px}.home-shell .post-summary{font-size:13px}.project-grid{grid-template-columns:minmax(0,1fr);gap:36px}.project-cover{padding:18px}.project-tile h3{font-size:22px}.personal-blog-layout{padding-top:38px}.personal-blog-profile h1{font-size:28px}.personal-blog-content .post-card h3{font-size:23px}.site-footer{padding:24px 22px;font-size:9px}.detail-shell{padding-top:28px}.post-detail>header h1{font-size:29px}.post-body{font-size:14px}.explore-tags{gap:10px}.explore-tags a{padding:14px 18px;font-size:13px}}@media (prefers-reduced-motion:reduce){.project-cover svg{transition:none}}@media (max-width:680px){.header-nav a{align-items:center;min-height:44px;padding:0;display:flex}.header-nav a[aria-current=page]:after{bottom:-18px}.session-links>a{align-items:center;min-height:44px;display:flex}.search-field:not(:first-child){flex:calc(50% - 9px)}.search-field input,.search-field select,.tag-trigger,.search-submit,.page-link{min-height:44px}.search-submit{margin-top:2px}}
