:root{--bg:#0B0D10;--surface:#12151A;--surface2:#171B21;--line:#242A33;--line2:#2E3642;--ink:#F2F3F5;--ink2:#A6AFBB;--ink3:#6E7887;--brand:#35E0A1;--brand-deep:#1AA870;--brand-dim:rgba(53,224,161,.12);--amber:#FFC24B;--red:#FF7A7A;--blue:#7AB8FF;--sans:"Pretendard Variable",Pretendard,-apple-system,BlinkMacSystemFont,"Apple SD Gothic Neo","Noto Sans KR","Segoe UI",sans-serif;--mono:ui-monospace,"SF Mono","JetBrains Mono",Menlo,Consolas,monospace;--r:14px;--maxw:1080px}*{margin:0;padding:0;box-sizing:border-box}html{scroll-behavior:smooth}body{background:var(--bg);color:var(--ink);font-family:var(--sans);line-height:1.65;-webkit-font-smoothing:antialiased}::selection{background:var(--brand);color:#06231A}a{color:inherit;text-decoration:none}button,input,select,textarea{font-family:inherit;font-size:inherit;color:inherit}.wrap{max-width:var(--maxw);margin:0 auto;padding:0 20px}.mono,.num{font-family:var(--mono)}.num{font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.muted{color:var(--ink2)}.dim{color:var(--ink3)}.nav{position:-webkit-sticky;position:sticky;top:0;z-index:60;background:rgba(11,13,16,.85);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid var(--line)}.nav-in{display:flex;align-items:center;justify-content:space-between;height:60px;gap:12px}.logo{font-family:var(--mono);font-weight:700;font-size:15px}.logo em{color:var(--brand);font-style:normal}.nav-right{display:flex;align-items:center;gap:10px}.pill{font-family:var(--mono);font-size:12.5px;color:var(--ink2);border:1px solid var(--line);border-radius:999px;padding:5px 12px;white-space:nowrap}.pill b{color:var(--amber);font-weight:600}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border-radius:10px;padding:11px 18px;font-size:14.5px;font-weight:700;border:1px solid transparent;cursor:pointer;transition:.16s;background:none}.btn:disabled{opacity:.4;cursor:not-allowed}.btn-primary{background:var(--brand);color:#06231A}.btn-primary:not(:disabled):hover{transform:translateY(-1px);box-shadow:0 6px 24px rgba(53,224,161,.25)}.btn-ghost{border-color:var(--line);color:var(--ink)}.btn-ghost:not(:disabled):hover{border-color:var(--ink3);background:var(--surface)}.btn-danger{border-color:rgba(255,122,122,.4);color:var(--red)}.btn-danger:hover{background:rgba(255,122,122,.1)}.btn-sm{padding:7px 13px;font-size:13px;border-radius:9px}.btn-block{width:100%}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:22px}.card+.card{margin-top:14px}.sec{padding:52px 0;border-top:1px solid var(--line)}.eyebrow{font-family:var(--mono);font-size:12px;letter-spacing:.16em;color:var(--brand);margin-bottom:10px}h1{font-size:clamp(30px,5.4vw,50px);line-height:1.18;letter-spacing:-.03em}h1,h2{font-weight:800}h2{font-size:clamp(22px,3.4vw,32px);letter-spacing:-.02em;line-height:1.3}h3{font-size:16px;font-weight:700}.lead{color:var(--ink2);margin-top:12px;max-width:640px;font-size:15.5px}.tiles{display:grid;grid-template-columns:repeat(4,1fr);grid-gap:12px;gap:12px}.tile{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:18px}.tile .t-l{font-size:12.5px;color:var(--ink3)}.tile .t-v{font-family:var(--mono);font-size:clamp(22px,2.8vw,30px);font-weight:700;margin-top:5px}.tile .t-v small{font-size:.55em;color:var(--ink3);font-weight:500}.tile .t-n{font-size:12px;color:var(--ink3);margin-top:5px}.tile .t-n b{color:var(--brand)}.cal-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px;gap:12px}.cal-title{font-family:var(--mono);font-size:17px;font-weight:700}.cal-nav{display:flex;gap:6px}.cal-nav button{width:34px;height:34px;border:1px solid var(--line);border-radius:9px;background:var(--surface);color:var(--ink2);cursor:pointer;transition:.15s}.cal-nav button:hover:not(:disabled){border-color:var(--brand);color:var(--brand)}.cal-nav button:disabled{opacity:.3;cursor:not-allowed}.cal-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));grid-gap:5px;gap:5px}.cal-dow{text-align:center;font-size:11.5px;color:var(--ink3);padding-bottom:6px;font-family:var(--mono)}.cal-dow.sun{color:#FF9B9B}.cal-dow.sat{color:#9BC4FF}.cal-day{aspect-ratio:1/1;min-width:0;border:1px solid var(--line);border-radius:10px;background:var(--surface);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;cursor:pointer;transition:.14s;position:relative;padding:4px;min-height:52px}.cal-day:hover:not(.off){border-color:var(--brand);background:var(--surface2)}.cal-day.off{opacity:.28;cursor:not-allowed;background:transparent}.cal-day.empty{border:none;background:none;cursor:default}.cal-day.sel{border-color:var(--brand);background:var(--brand-dim);box-shadow:0 0 0 1px var(--brand) inset}.cal-day .d{font-family:var(--mono);font-size:14px;font-weight:600}.cal-day.today .d{color:var(--amber)}.cal-dots{display:flex;gap:2.5px;height:5px}.cal-dots i{width:5px;height:5px;border-radius:50%;background:var(--brand-deep);display:block}.cal-dots i.full{background:var(--amber)}.legend{display:flex;gap:16px;flex-wrap:wrap;margin-top:14px;font-size:12px;color:var(--ink3);font-family:var(--mono)}.legend span{display:inline-flex;align-items:center;gap:6px}.legend i{width:8px;height:8px;border-radius:50%;display:block}.slots{display:grid;grid-template-columns:repeat(auto-fill,minmax(88px,1fr));grid-gap:8px;gap:8px;margin-top:14px}.slot{border:1px solid var(--line);border-radius:10px;background:var(--surface);padding:11px 6px;text-align:center;cursor:pointer;transition:.14s;font-family:var(--mono);font-size:13.5px;position:relative}.slot:hover:not(.taken):not(.sel):not(:disabled){border-color:var(--brand);color:var(--brand)}.slot.sel,.slot.sel:hover{background:var(--brand);color:#06231A;border-color:var(--brand);font-weight:700}.slot.taken{background:rgba(255,194,75,.07);border-color:rgba(255,194,75,.3);color:var(--amber);cursor:pointer}.slot.past{opacity:.25;cursor:not-allowed}.slot.live{background:var(--brand-dim);border-color:var(--brand);box-shadow:0 0 0 1px var(--brand) inset}.slot.live,.slot.live .tag{color:var(--brand)}.slot.blocked{background:repeating-linear-gradient(45deg,#14171C,#14171C 5px,#0F1216 0,#0F1216 10px);border-color:var(--line)}.slot.blocked,.slot.blocked .tag{color:var(--ink3)}.cal-day.blocked{opacity:.4}.slot .tag{display:block;font-size:9.5px;margin-top:2px;opacity:.85;font-family:var(--sans)}.pop{position:fixed;inset:0;background:rgba(5,7,10,.72);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:100;display:flex;align-items:center;justify-content:center;padding:20px}.pop,.pop-in{overflow-y:auto}.pop-in{background:var(--surface);border:1px solid var(--line2);border-radius:16px;padding:24px;max-width:400px;width:100%;box-shadow:0 24px 70px rgba(0,0,0,.6);max-height:calc(100vh - 40px);max-height:calc(100dvh - 40px);-webkit-overflow-scrolling:touch;margin:auto}.pop-in h3{font-size:17px;margin-bottom:4px}.kv{display:flex;justify-content:space-between;gap:14px;padding:9px 0;border-bottom:1px dashed var(--line);font-size:14px}.kv:last-of-type{border-bottom:none}.kv .k{color:var(--ink3);font-size:13px}.kv .v{font-family:var(--mono);font-weight:600}.field{margin-bottom:16px}.field label{display:block;font-size:13px;font-weight:600;color:var(--ink2);margin-bottom:7px}.field label .req{color:var(--brand)}.field .hint{font-size:12px;color:var(--ink3);margin-top:6px}.input,select.input,textarea.input{width:100%;background:#0D1116;border:1px solid var(--line);border-radius:10px;padding:11px 13px;font-size:14.5px;transition:.15s;outline:none}.input:focus{border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-dim)}textarea.input{resize:vertical;min-height:92px;line-height:1.6}.row{display:grid;grid-template-columns:1fr 1fr;grid-gap:12px;gap:12px}.chips{display:flex;flex-wrap:wrap;gap:8px}.chip{border:1px solid var(--line);border-radius:999px;padding:8px 15px;font-size:13.5px;cursor:pointer;background:var(--surface);transition:.14s;display:inline-flex;align-items:center;gap:6px}.chip:hover:not(.on){border-color:var(--ink3)}.chip.on{background:var(--brand-dim);border-color:var(--brand);color:var(--brand);font-weight:600}.exp-row{display:grid;grid-template-columns:1fr 130px 38px;grid-gap:8px;gap:8px;margin-bottom:8px}.icon-btn{border:1px solid var(--line);border-radius:9px;background:var(--surface);color:var(--ink3);cursor:pointer;transition:.14s}.icon-btn:hover{border-color:var(--red);color:var(--red)}.steps{display:flex;gap:6px;margin-bottom:26px}.step-i{flex:1 1;display:flex;flex-direction:column;gap:7px}.step-i .bar{height:3px;border-radius:2px;background:var(--line);transition:.3s}.step-i.on .bar{background:var(--brand)}.step-i.done .bar{background:var(--brand-deep)}.step-i .lb{font-size:11.5px;color:var(--ink3);font-family:var(--mono)}.step-i.on .lb{color:var(--brand)}.quote{background:#0D1116;border:1px solid var(--line);border-left:3px solid var(--brand);border-radius:12px;padding:18px;margin-top:6px}.quote .qr{display:flex;justify-content:space-between;padding:6px 0;font-size:14px}.quote .qr.total{border-top:1px dashed var(--line2);margin-top:10px;padding-top:12px;font-weight:700;font-size:16px}.quote .qr .v{font-family:var(--mono)}.quote .qr.total .v{color:var(--brand);font-size:19px}.badge{display:inline-block;padding:3px 9px;border-radius:6px;font-size:11.5px;font-weight:700;font-family:var(--mono);white-space:nowrap}.b-pending{background:rgba(255,194,75,.13);color:var(--amber)}.b-paid{background:rgba(122,184,255,.13);color:var(--blue)}.b-repriced{background:rgba(255,194,75,.18);color:var(--amber)}.b-confirmed{background:var(--brand-dim);color:var(--brand)}.b-done{background:rgba(166,175,187,.13);color:var(--ink2)}.b-settled{background:rgba(26,168,112,.16);color:var(--brand-deep)}.b-rejected{background:rgba(255,122,122,.13);color:var(--red)}table.tb{width:100%;border-collapse:collapse;font-size:13.5px}table.tb th{text-align:left;color:var(--ink3);font-size:11.5px;font-weight:600;letter-spacing:.06em;padding:9px 10px}table.tb td,table.tb th{border-bottom:1px solid var(--line)}table.tb td{padding:12px 10px;vertical-align:middle}table.tb tr:hover td{background:var(--surface2)}.tb-wrap{overflow-x:auto}.alert{border-radius:10px;padding:12px 15px;font-size:13.5px;margin-bottom:16px;border:1px solid}.alert-info{background:rgba(122,184,255,.07);border-color:rgba(122,184,255,.25);color:#BBD9FF}.alert-warn{background:rgba(255,194,75,.07);border-color:rgba(255,194,75,.25);color:#FFDFA0}.alert-ok{background:var(--brand-dim);border-color:rgba(53,224,161,.3);color:#9BF0CE}.empty{text-align:center;padding:48px 20px;color:var(--ink3);font-size:14px}.spin{display:inline-block;width:15px;height:15px;border:2px solid rgba(255,255,255,.25);border-top-color:currentcolor;border-radius:50%;animation:sp .7s linear infinite}@keyframes sp{to{transform:rotate(1turn)}}.grid2{display:grid;grid-template-columns:1.25fr .75fr;grid-gap:20px;gap:20px;align-items:start}.sticky{position:-webkit-sticky;position:sticky;top:78px}@media(max-width:900px){.tiles{grid-template-columns:repeat(2,1fr)}.grid2{grid-template-columns:1fr}.sticky{position:static}.row{grid-template-columns:1fr}}@media(max-width:520px){.cal-grid{gap:4px}.cal-day{min-height:46px;padding:3px;border-radius:9px}.cal-day .d{font-size:13.5px}.cal-dots{gap:2px}.cal-nav button{width:40px;height:40px}.cal-title{font-size:16px}.legend{gap:9px 12px;font-size:11px;margin-top:12px}.pill{display:none}.slots{grid-template-columns:repeat(auto-fill,minmax(74px,1fr));gap:7px}.slot{padding:12px 6px}}.cap-grid{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:14px;gap:14px;margin-top:30px}.cap{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:24px}.cap-ic{font-size:30px}.cap h3{font-size:16px;margin-top:12px;color:var(--brand)}.cap p{font-size:13.5px;color:var(--ink2);margin-top:8px;line-height:1.6}.proj-grid{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:14px;gap:14px;margin-top:24px}.proj-grid.feat{grid-template-columns:repeat(3,1fr)}.proj{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:22px;display:flex;flex-direction:column;transition:.16s;text-decoration:none}.proj:hover{border-color:var(--brand);transform:translateY(-2px);box-shadow:0 10px 30px rgba(0,0,0,.35)}.proj.no-link{cursor:default}.proj.no-link:hover{transform:none;border-color:var(--line)}.proj .proj-link{font-family:var(--mono);font-size:11px;color:var(--brand-deep)}.proj.feat-card{border-color:var(--line2);background:linear-gradient(180deg,var(--surface2),var(--surface))}.proj-top{display:flex;justify-content:space-between;align-items:center}.proj-cat{font-family:var(--mono);font-size:11.5px;color:var(--brand);background:var(--brand-dim);border:1px solid rgba(53,224,161,.25);border-radius:999px;padding:4px 11px}.proj-link{color:var(--ink3);font-size:16px}.proj h3{font-size:19px;margin-top:14px;letter-spacing:-.01em}.proj-tag{font-size:13.5px;color:var(--ink2);margin-top:8px;line-height:1.6;flex:1 1}.proj-skills{display:flex;flex-wrap:wrap;gap:6px;margin-top:14px}.proj-skills .sk{font-size:11.5px;color:var(--ink3);border:1px solid var(--line);border-radius:6px;padding:4px 9px}@media(max-width:860px){.cap-grid,.proj-grid,.proj-grid.feat{grid-template-columns:1fr 1fr}}@media(max-width:560px){.cap-grid,.proj-grid,.proj-grid.feat{grid-template-columns:1fr}}.profile{display:grid;grid-template-columns:200px 1fr;grid-gap:26px;gap:26px;background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:28px;margin-top:8px}.profile-av{position:relative;border-radius:12px;background:linear-gradient(140deg,#0D1116,#171B21);border:1px solid var(--line);display:flex;align-items:center;justify-content:center;min-height:180px;overflow:hidden}.av-term{position:absolute;top:12px;left:12px;font-family:var(--mono);font-size:11px;color:var(--ink3)}.av-term .cur{color:var(--brand);animation:blink 1.1s steps(1) infinite}@keyframes blink{50%{opacity:0}}.av-mono{font-family:var(--mono);font-size:96px;font-weight:800;color:var(--brand);text-shadow:0 0 40px rgba(53,224,161,.35)}.profile-name{font-size:24px;font-weight:800;letter-spacing:-.02em}.profile-bio{font-size:15px;color:var(--ink2);margin-top:10px;line-height:1.7;max-width:600px}.profile-bio b{color:var(--ink)}.profile-stats{display:flex;gap:20px;flex-wrap:wrap;margin-top:16px}.profile-stats .ps{font-size:13px;color:var(--ink3)}.profile-stats .ps b{font-family:var(--mono);color:var(--brand);font-size:16px;font-weight:700;margin-right:4px}.profile-links{display:flex;gap:10px;flex-wrap:wrap;margin-top:18px}.profile-links a{font-family:var(--mono);font-size:13px;color:var(--ink2);border:1px solid var(--line);border-radius:9px;padding:9px 15px;transition:.15s}.profile-links a:hover{border-color:var(--brand);color:var(--brand)}@media(max-width:640px){.profile{grid-template-columns:1fr}.profile-av{min-height:120px}.av-mono{font-size:64px}}.tg-fab{position:fixed;right:18px;bottom:18px;z-index:70;display:inline-flex;align-items:center;gap:8px;background:#229ED9;color:#fff;font-weight:700;font-size:14px;border-radius:999px;padding:12px 18px;box-shadow:0 8px 28px rgba(34,158,217,.4);transition:.16s;border:none}.tg-fab:hover{transform:translateY(-2px);box-shadow:0 12px 34px rgba(34,158,217,.5)}.tg-fab svg{width:19px;height:19px;flex:none}.tg-fab .tg-lbl{white-space:nowrap}@media(max-width:520px){.tg-fab{right:14px;bottom:14px;padding:11px 15px;font-size:13.5px}.nav-in{height:auto;min-height:56px;flex-wrap:wrap;gap:8px;padding:9px 0}.nav-right{gap:8px}}@media(max-width:720px){.tb-wrap{overflow-x:visible}table.tb thead{display:none}table.tb,table.tb tbody{display:block;width:100%}table.tb tr{display:block;border:1px solid var(--line);border-radius:12px;margin-bottom:12px;padding:8px 14px 12px;background:var(--surface)}table.tb tr:hover td{background:none}table.tb td{display:block;border-bottom:1px dashed var(--line);padding:9px 0;text-align:left;white-space:normal}table.tb td:last-child{border-bottom:none;padding-top:12px}table.tb td[data-label]:before{content:attr(data-label);display:block;color:var(--ink3);font-size:11px;font-weight:600;letter-spacing:.05em;margin-bottom:3px}table.tb td .cell-actions{display:flex;gap:8px;flex-wrap:wrap;width:100%}table.tb td .cell-actions .btn{flex:1 1 auto;min-width:calc(50% - 4px);padding:11px 12px;font-size:13.5px}}@media(max-width:420px){.pop{padding:12px}.pop-in{padding:18px}.tiles{gap:8px}.tile{padding:14px}.cal-grid{gap:3px}.cal-day{min-height:44px}.cal-day .d{font-size:13px}.cal-dow{font-size:10.5px}.slots{grid-template-columns:repeat(auto-fill,minmax(70px,1fr))}}