:root{--color-bg:#f6f5f2;--color-surface:#fff;--color-surface-muted:#efede8;--color-border:#e2dfd8;--color-text:#1f1e1c;--color-text-muted:#6b6862;--color-primary:#3b5bdb;--color-primary-hover:#2f4ac0;--color-primary-soft:#e7ecfd;--color-on-primary:#fff;--color-success:#2b8a3e;--color-success-hover:#237032;--color-warning:#e8590c;--color-warning-soft:#fff0e6;--color-danger:#c92a2a;--card-white:#fff;--card-yellow:#fff3bf;--card-green:#d3f9d8;--card-blue:#d0ebff;--card-pink:#ffdeeb;--card-purple:#e5dbff;--font:"Pretendard Variable", Pretendard, system-ui, -apple-system, "Apple SD Gothic Neo", "Malgun Gothic", sans-serif;--radius-sm:6px;--radius-md:12px;--radius-lg:16px;--shadow-card:0 1px 2px #0000000f, 0 2px 8px #0000000a;--shadow-raised:0 8px 24px #0000001f;--ease:.15s ease-out;--gutter:24px}@media (width<=639px){:root{--gutter:16px}}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{background:var(--color-bg);color:var(--color-text);font-family:var(--font);-webkit-font-smoothing:antialiased;margin:0;font-size:15px;line-height:1.6}h1,h2,h3,p{margin:0}button,input,textarea{font:inherit;color:inherit}img{max-width:100%;display:block}a{color:var(--color-primary)}:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.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}.btn{border-radius:var(--radius-sm);white-space:nowrap;cursor:pointer;min-height:40px;transition:background var(--ease), border-color var(--ease), color var(--ease);border:1px solid #0000;justify-content:center;align-items:center;gap:6px;padding:0 16px;font-size:14px;font-weight:600;line-height:1;text-decoration:none;display:inline-flex}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-sm{min-height:32px;padding:0 12px;font-size:13px}.btn-lg{min-height:48px;font-size:15px}.btn-block{width:100%}.btn-primary{background:var(--color-primary);color:var(--color-on-primary)}.btn-primary:not(:disabled):hover{background:var(--color-primary-hover)}.btn-secondary{background:var(--color-surface);border-color:var(--color-border)}.btn-secondary:not(:disabled):hover{background:var(--color-surface-muted)}.btn-ghost{background:0 0}.btn-ghost:not(:disabled):hover{background:var(--color-surface-muted)}.btn-success{background:var(--color-success);color:#fff}.btn-success:not(:disabled):hover{background:var(--color-success-hover)}.btn-warning{background:var(--color-warning-soft);color:var(--color-warning);border-color:#ffd8bf}.danger{color:var(--color-danger)}.icon-btn{width:40px;height:40px;color:var(--color-text-muted);cursor:pointer;transition:background var(--ease), color var(--ease);background:0 0;border:0;border-radius:50%;place-items:center;display:inline-grid}.icon-btn:hover{background:var(--color-surface-muted);color:var(--color-text)}.icon-btn-sm{width:32px;height:32px}.link-btn{color:var(--color-primary);cursor:pointer;background:0 0;border:0;margin-left:4px;padding:0;font-size:13px;font-weight:600}.badge{background:var(--color-surface-muted);color:var(--color-text-muted);border-radius:999px;align-items:center;gap:3px;padding:2px 8px;font-size:12px;font-weight:600;line-height:1.5;display:inline-flex}.badge-warning{background:var(--color-warning-soft);color:var(--color-warning)}.badge-primary{background:var(--color-primary-soft);color:var(--color-primary)}.input{border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);width:100%;min-height:44px;transition:border-color var(--ease), box-shadow var(--ease);padding:10px 12px}.input:focus{border-color:var(--color-primary);box-shadow:0 0 0 3px var(--color-primary-soft);outline:none}.textarea{resize:vertical;min-height:96px;line-height:1.6}.input-title{font-size:17px;font-weight:600}.form{gap:16px;display:grid}.field{gap:6px;display:grid}.field-label{color:var(--color-text-muted);font-size:13px;font-weight:600}.field-error{color:var(--color-danger);font-size:13px}.hint{color:var(--color-text-muted);font-size:13px}.row{gap:8px;display:flex}.row .input{flex:1;min-width:0}.switch{cursor:pointer;align-items:flex-start;gap:12px;display:flex}.switch input{width:20px;height:20px;accent-color:var(--color-primary);flex:none;margin:2px 0 0}.switch>span{gap:2px;display:grid}.page{min-height:100vh}.topbar{z-index:10;min-height:64px;padding:8px var(--gutter);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid var(--color-border);background:#f6f5f2eb;justify-content:space-between;align-items:center;gap:12px;display:flex;position:sticky;top:0}.topbar-title{align-items:center;gap:10px;font-size:17px;display:flex}.topbar-actions{flex:none;align-items:center;gap:4px;display:flex}.who{color:var(--color-text-muted);margin-right:4px;font-size:14px}.logo{grid-template-columns:1fr 1fr;gap:4px;width:48px;height:48px;display:grid}.logo span{border-radius:4px}.logo span:first-child{background:var(--color-primary)}.logo span:nth-child(2){background:#ffd43b}.logo span:nth-child(3){background:#69db7c}.logo span:nth-child(4){background:#f783ac}.logo-sm{gap:2px;width:24px;height:24px}.logo-sm span{border-radius:2px}.landing{min-height:100vh;padding:32px var(--gutter);align-content:center;place-items:center;gap:16px;display:grid}.landing-card{text-align:center;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);width:100%;max-width:400px;box-shadow:var(--shadow-card);justify-items:center;gap:16px;padding:40px 32px;display:grid}.landing-card h1{font-size:28px;line-height:1.3}.landing-lead{color:var(--color-text-muted)}.landing-card .join,.landing-card form{text-align:left;gap:8px;width:100%;display:grid}.footer-link{color:var(--color-text-muted);font-size:13px}.pin-input{text-align:center;letter-spacing:.4em;font-size:22px}.dashboard{max-width:1120px;padding:32px var(--gutter) 64px;margin:0 auto}.dashboard-head{justify-content:space-between;align-items:center;margin-bottom:24px;display:flex}.dashboard-head h1{font-size:24px}.board-grid{grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:16px;margin:0;padding:0;list-style:none;display:grid}.board-tile{color:inherit;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-card);transition:box-shadow var(--ease), transform var(--ease);text-decoration:none;display:block;overflow:hidden}.board-tile:hover{box-shadow:var(--shadow-raised);transform:translateY(-2px)}.board-tile-preview{background:var(--color-surface-muted);grid-template-columns:repeat(3,1fr);gap:6px;height:112px;padding:12px;display:grid}.board-tile-preview span{background:var(--card-yellow);border-radius:4px}.board-tile-preview span:nth-child(2){background:var(--card-blue);grid-row:span 2}.board-tile-preview span:nth-child(3){background:var(--card-green)}.board-tile-preview span:nth-child(4){background:var(--card-pink)}.board-tile-preview span:nth-child(5){background:var(--card-white)}.board-tile-info{gap:4px;padding:14px 16px;display:grid}.board-tile-info strong{font-size:16px}.board-tile-meta{color:var(--color-text-muted);flex-wrap:wrap;align-items:center;gap:8px;font-size:13px;display:flex}.board-tile-skeleton{border-radius:var(--radius-md);height:176px}.board-heading{align-items:center;gap:4px;min-width:0;display:flex}.board-titles{min-width:0}.board-titles h1{text-overflow:ellipsis;white-space:nowrap;font-size:20px;line-height:1.3;overflow:hidden}.board-titles p{color:var(--color-text-muted);text-overflow:ellipsis;white-space:nowrap;font-size:13px;overflow:hidden}.board-main{padding:24px var(--gutter) 120px}.conn{color:var(--color-text-muted);white-space:nowrap;align-items:center;gap:6px;margin-right:8px;font-size:13px;display:inline-flex}.conn .dot{background:var(--color-success);border-radius:50%;width:8px;height:8px}.conn-reconnecting .dot,.conn-connecting .dot{background:#f59f00}.banner{padding:8px var(--gutter);background:var(--color-surface-muted);color:var(--color-text-muted);justify-content:center;align-items:center;gap:6px;font-size:14px;display:flex}.masonry{align-items:flex-start;display:flex}.masonry-col{flex-direction:column;flex:1;min-width:0;display:flex}.fab{right:var(--gutter);z-index:20;cursor:pointer;background:var(--color-primary);width:60px;height:60px;color:var(--color-on-primary);box-shadow:var(--shadow-raised);transition:background var(--ease), transform var(--ease);border:0;border-radius:50%;place-items:center;display:grid;position:fixed;bottom:24px}.fab:hover{background:var(--color-primary-hover);transform:scale(1.04)}.card{border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-card);position:relative;overflow:hidden}.color-white{background:var(--card-white)}.color-yellow{background:var(--card-yellow)}.color-green{background:var(--card-green)}.color-blue{background:var(--card-blue)}.color-pink{background:var(--card-pink)}.color-purple{background:var(--card-purple)}.card-pending{border:2px dashed var(--color-warning);opacity:.88}.card-enter{animation:.24s ease-out card-in}@keyframes card-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.card-image{background:var(--color-surface-muted);display:block}.card-image img{object-fit:cover;width:100%;max-height:420px}.card-content{justify-items:start;gap:6px;padding:14px 16px 4px;display:grid}.card-content:empty{display:none}.card-title{overflow-wrap:anywhere;padding-right:28px;font-size:17px;font-weight:600;line-height:1.4}.card-body{white-space:pre-wrap;overflow-wrap:anywhere}.card-body.clamped{-webkit-line-clamp:8;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.card-foot{color:var(--color-text-muted);justify-content:space-between;align-items:center;gap:8px;padding:10px 16px 12px;font-size:13px;display:flex}.card-author{align-items:center;gap:6px;min-width:0;font-weight:600;display:inline-flex}.card-time{font-variant-numeric:tabular-nums;flex:none}.card-approve{gap:8px;padding:0 16px 14px;display:flex}.card-note{color:var(--color-warning);padding:0 16px 12px;font-size:12px}.card-menu{z-index:2;opacity:0;transition:opacity var(--ease);position:absolute;top:6px;right:6px}.card:hover .card-menu,.card-menu:focus-within{opacity:1}@media (hover:none){.card-menu{opacity:1}}.card-menu .icon-btn{background:#ffffffd9}.menu{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-sm);min-width:120px;box-shadow:var(--shadow-raised);padding:4px;position:absolute;top:36px;right:0}.menu button{text-align:left;cursor:pointer;background:0 0;border:0;border-radius:4px;align-items:center;gap:8px;width:100%;padding:8px 10px;font-size:14px;display:flex}.menu button:hover{background:var(--color-surface-muted)}.overlay{z-index:50;background:#14141266;place-items:center;padding:16px;animation:.15s ease-out fade;display:grid;position:fixed;inset:0}@keyframes fade{0%{opacity:0}}.modal{background:var(--color-surface);border-radius:var(--radius-lg);width:100%;max-width:520px;max-height:calc(100vh - 32px);box-shadow:var(--shadow-raised);flex-direction:column;display:flex}.modal-wide{max-width:720px}.modal-head{justify-content:space-between;align-items:center;gap:8px;padding:16px 16px 8px 24px;display:flex}.modal-head h2{font-size:18px;font-weight:600}.modal-body{padding:8px 24px 16px;overflow-y:auto}.modal-foot{border-top:1px solid var(--color-border);justify-content:flex-end;align-items:center;gap:12px;padding:12px 24px 20px;display:flex}.modal-foot .hint{margin-right:auto}.overlay-side{place-items:stretch end;padding:0}.modal-side{border-radius:0;max-width:380px;height:100%;max-height:none;animation:.2s ease-out slide-in}@keyframes slide-in{0%{opacity:0;transform:translate(24px)}}@media (width<=639px){.overlay{place-items:end stretch;padding:0}.modal{border-radius:var(--radius-lg) var(--radius-lg) 0 0;max-width:none;max-height:90vh;animation:.22s ease-out sheet-in}.modal-side{border-radius:0;height:100%;max-height:none}.overlay-side{place-items:stretch stretch}.modal-body{padding:8px 16px 16px}.modal-head{padding-left:16px}.modal-foot{padding:12px 16px 20px}.topbar .who,.conn-text-hide{display:none}}@keyframes sheet-in{0%{opacity:0;transform:translateY(32px)}}.composer{gap:12px;display:grid}.composer-author{color:var(--color-text-muted);font-size:14px}.composer-tools{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}.colors{gap:8px;display:flex}.swatch{cursor:pointer;border:1px solid var(--color-border);width:28px;height:28px;transition:transform var(--ease);border-radius:50%}.swatch.selected{outline:2px solid var(--color-primary);outline-offset:2px}.swatch:hover{transform:scale(1.1)}.counter{text-align:right;color:var(--color-text-muted);font-variant-numeric:tabular-nums;font-size:12px}.attach{border-radius:var(--radius-sm);background:var(--color-surface-muted);position:relative;overflow:hidden}.attach img{object-fit:contain;width:100%;max-height:240px}.attach-remove{background:#ffffffe6;position:absolute;top:6px;right:6px}.attach .field-error{padding:8px}.progress{background:#0000001a;height:4px;position:absolute;bottom:0;left:0;right:0}.progress div{background:var(--color-primary);height:100%;transition:width .12s linear}.share{justify-items:center;gap:16px;display:grid}.share-link{gap:8px;width:100%;display:flex}.share-link .input{flex:1;min-width:0}.share-qr{width:220px;height:220px}.qr-full{z-index:60;text-align:center;background:#fff;align-content:center;place-items:center;gap:24px;padding:24px;display:grid;position:fixed;inset:0}.qr-full h2{font-size:32px}.qr-full img{width:min(70vh,80vw);height:auto}.qr-url{overflow-wrap:anywhere;font-size:24px;font-weight:600}.approve-all{width:100%;margin-bottom:12px}.pending-list{gap:10px;margin:0;padding:0;list-style:none;display:grid}.pending-item{border:1px solid var(--color-border);border-radius:var(--radius-sm);grid-template-columns:auto 1fr;gap:10px;padding:12px;display:grid}.pending-thumb{object-fit:cover;border-radius:4px;width:56px;height:56px}.pending-text{grid-column:span 1;min-width:0}.pending-item:not(:has(.pending-thumb)) .pending-text{grid-column:1/-1}.pending-meta{color:var(--color-text-muted);font-size:13px}.pending-title{font-weight:600}.pending-body{white-space:pre-wrap;overflow-wrap:anywhere;-webkit-line-clamp:4;-webkit-box-orient:vertical;font-size:14px;display:-webkit-box;overflow:hidden}.pending-actions{grid-column:1/-1;justify-content:flex-end;gap:8px;display:flex}.danger-zone{border-top:1px solid var(--color-border);padding-top:16px}.empty{text-align:center;justify-items:center;gap:8px;padding:80px 16px;display:grid}.empty-title{font-size:18px;font-weight:600}.empty .btn{margin-top:8px}.empty-small{color:var(--color-text-muted);justify-items:center;gap:8px;padding:48px 0;display:grid}.skeleton{background:linear-gradient(90deg, var(--color-surface-muted), #f7f6f3, var(--color-surface-muted));border-radius:var(--radius-sm);background-size:200% 100%;animation:1.2s infinite shimmer}.card-skeleton{border-radius:var(--radius-md);height:180px}.card-skeleton.short{height:120px}@keyframes shimmer{to{background-position:-200% 0}}.toasts{right:var(--gutter);z-index:70;justify-items:end;gap:8px;display:grid;position:fixed;bottom:96px}.toast{background:var(--color-text);color:#fff;border-radius:var(--radius-sm);max-width:min(360px,100vw - 32px);box-shadow:var(--shadow-raised);padding:12px 16px;font-size:14px;animation:.2s ease-out card-in}.toast-error{background:var(--color-danger)}@media (width<=639px){.toasts{justify-items:stretch;inset:16px 16px auto}}.prose{max-width:680px;padding:48px var(--gutter);gap:12px;margin:0 auto;display:grid}.prose h1{font-size:26px}.prose h2{margin-top:12px;font-size:18px}.prose ul{margin:0;padding-left:20px}.prose .btn{justify-self:start;margin-top:16px}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation:none!important}}@media print{.topbar,.fab,.toasts,.card-menu,.card-approve{display:none!important}body{background:#fff}}
