body.ws-projects{--rule-thread: #cbc4b1;--motion-snap: cubic-bezier(.2,.8,.2,1);--hi: #b22222;--md: #c98a14;--lo: #6a7c8e;background-image:radial-gradient(1100px 600px at 80% -10%,rgba(208,219,213,.18),transparent 60%),radial-gradient(900px 500px at -10% 20%,rgba(220,212,196,.25),transparent 70%)}body.ws-projects main.ws-wrap,body.ws-projects .ws-wrap{position:relative;z-index:2;max-width:1480px;width:100%;margin:0 auto;padding:22px 40px 40px!important;background:transparent!important;border:none!important}@media(max-width:980px){body.ws-projects main.ws-wrap,body.ws-projects .ws-wrap{padding:18px 16px 40px!important}}body.ws-projects .ws-head{position:relative!important;display:block!important;padding:14px 24px 22px!important;margin:0 0 22px!important;border:none!important;background:transparent!important}body.ws-projects .ws-head:before,body.ws-projects .ws-head:after,body.ws-projects .ws-head>.br-bl,body.ws-projects .ws-head>.br-br{content:"";position:absolute;width:14px;height:14px;border:1px solid var(--ink);pointer-events:none}body.ws-projects .ws-head:before{top:0;left:0;border-right:none;border-bottom:none}body.ws-projects .ws-head:after{top:0;right:0;border-left:none;border-bottom:none}body.ws-projects .ws-head>.br-bl{bottom:0;left:0;border-top:none;border-right:none}body.ws-projects .ws-head>.br-br{bottom:0;right:0;border-top:none;border-left:none}body.ws-projects .kicker{display:inline-flex;align-items:center;gap:12px;font-family:var(--mono);font-size:10.5px;color:var(--accent-deep);letter-spacing:.14em;text-transform:uppercase;margin-bottom:12px}body.ws-projects .kicker .k-tag{border:1px solid var(--accent-deep);padding:2px 7px;border-radius:2px;font-size:9.5px}body.ws-projects .kicker .k-coord{color:var(--ink-4);font-size:9.5px}body.ws-projects .head-row{display:flex;gap:20px;justify-content:space-between;align-items:flex-end;flex-wrap:wrap}body.ws-projects .head-title,body.ws-projects .ws-title{font-family:var(--serif);font-weight:400;font-size:clamp(40px,5vw,68px);letter-spacing:-.012em;line-height:1;margin:0;color:var(--ink)}body.ws-projects .head-title em,body.ws-projects .ws-title em{font-style:italic;color:var(--accent-deep)}body.ws-projects .head-sub,body.ws-projects .ws-sub{font-family:var(--serif);font-size:19px;color:var(--ink-2);max-width:64ch;margin-top:12px;line-height:1.4}body.ws-projects .head-actions,body.ws-projects .ws-head-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}body.ws-projects .head-actions .ws-btn,body.ws-projects .head-actions .ws-btn-ghost,body.ws-projects .head-actions .ws-btn-secondary,body.ws-projects .ws-head-actions .ws-btn,body.ws-projects .ws-head-actions .ws-btn-ghost,body.ws-projects .ws-head-actions .ws-btn-secondary{display:inline-flex;align-items:center;gap:8px;padding:11px 18px;cursor:pointer;font-family:var(--mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase;background:var(--ink);color:var(--paper);border:1px solid var(--ink);border-radius:4px;text-decoration:none;transition:background .15s var(--motion-snap),border-color .15s,color .15s}body.ws-projects .head-actions .ws-btn:hover,body.ws-projects .ws-head-actions .ws-btn:hover{background:var(--accent-deep);border-color:var(--accent-deep)}body.ws-projects .head-actions .ws-btn-ghost,body.ws-projects .head-actions .ws-btn-secondary,body.ws-projects .ws-head-actions .ws-btn-ghost,body.ws-projects .ws-head-actions .ws-btn-secondary{background:transparent!important;color:var(--ink)!important}body.ws-projects .head-actions .ws-btn-ghost:hover,body.ws-projects .head-actions .ws-btn-secondary:hover,body.ws-projects .ws-head-actions .ws-btn-ghost:hover,body.ws-projects .ws-head-actions .ws-btn-secondary:hover{background:var(--ink)!important;color:var(--paper)!important}body.ws-projects .head-actions .ws-btn svg{width:12px;height:12px}body.ws-projects .meta-strip{display:grid;grid-template-columns:repeat(5,1fr);border-top:1px solid var(--rule-soft);border-bottom:1px solid var(--rule-soft);margin:0 0 22px}body.ws-projects .ms-cell{padding:13px 18px;border-right:1px solid var(--rule-soft);display:flex;flex-direction:column;gap:5px}body.ws-projects .ms-cell:last-child{border-right:none}body.ws-projects .ms-l{font-family:var(--mono);font-size:9.5px;color:var(--ink-3);letter-spacing:.14em;text-transform:uppercase}body.ws-projects .ms-v{font-family:var(--serif);font-size:24px;color:var(--ink);line-height:1}body.ws-projects .ms-v em{font-style:italic;color:var(--accent-deep)}body.ws-projects .ms-d{font-family:var(--mono);font-size:9.5px;color:var(--ink-4);letter-spacing:.08em;text-transform:uppercase}@media(max-width:1100px){body.ws-projects .meta-strip{grid-template-columns:repeat(2,1fr)}body.ws-projects .ms-cell:nth-child(2n){border-right:none}}@media(max-width:480px){body.ws-projects .meta-strip{grid-template-columns:1fr}body.ws-projects .ms-cell{border-right:none!important}}body.ws-projects .sec-div{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:16px;margin:8px 0 14px;font-family:var(--mono);font-size:10.5px;color:var(--ink-3);letter-spacing:.12em;text-transform:uppercase}body.ws-projects .sec-num{color:var(--ink)}body.ws-projects .sec-rule{height:1px;background:var(--rule-soft)}body.ws-projects .sec-meta{color:var(--ink-4);font-size:9.5px}body.ws-projects .filter-row{display:flex;gap:0;align-items:center;flex-wrap:wrap;border:1px solid var(--rule-soft);border-radius:4px;background:#ffffff4d;padding:4px 10px;margin-bottom:16px;font-family:var(--mono);font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3)}body.ws-projects .filter-row .fl-l{font-size:9px;color:var(--ink-4);letter-spacing:.14em;margin-right:10px;padding:4px 0}body.ws-projects .fl-toggle{display:inline-flex;align-items:center;gap:6px;padding:6px 11px;background:transparent;border:none;cursor:pointer;color:var(--ink-3);font-family:var(--mono);font-size:10px;letter-spacing:.08em;text-transform:uppercase;transition:color .15s}body.ws-projects .fl-toggle:hover{color:var(--ink)}body.ws-projects .fl-toggle.is-on{color:var(--accent-deep)}body.ws-projects .fl-toggle .fl-pip{width:5px;height:5px;border-radius:50%;border:1px solid currentColor;transition:background .15s}body.ws-projects .fl-toggle.is-on .fl-pip{background:currentColor}body.ws-projects .fl-toggle .fl-cnt{font-size:9px;opacity:.7}body.ws-projects .fl-sep{width:1px;height:12px;background:var(--rule-soft);margin:0 1px}body.ws-projects .fl-spacer{flex:1}body.ws-projects .fl-sort{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;cursor:pointer;color:var(--ink-3);background:transparent;border:none;font-family:var(--mono);font-size:10px;letter-spacing:.08em;text-transform:uppercase;transition:color .15s}body.ws-projects .fl-sort:hover{color:var(--ink)}body.ws-projects .fl-sort .v{font-family:var(--sans);text-transform:none;letter-spacing:0;font-size:11.5px;color:var(--ink);border-bottom:1px dotted var(--ink-3)}body.ws-projects .proj-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}@media(max-width:1100px){body.ws-projects .proj-grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:720px){body.ws-projects .proj-grid{grid-template-columns:1fr}}body.ws-projects .proj-card{position:relative;background:var(--paper-2);border:1px solid var(--rule-soft);border-radius:8px;overflow:hidden;display:flex;flex-direction:column;cursor:pointer;color:var(--ink);text-decoration:none;transition:border-color .15s var(--motion-snap),transform .15s}body.ws-projects .proj-card:hover{border-color:var(--ink);transform:translateY(-2px)}body.ws-projects .proj-card:before,body.ws-projects .proj-card:after{content:"";position:absolute;width:8px;height:8px;border-color:var(--ink-4);pointer-events:none;transition:border-color .15s var(--motion-snap),width .15s,height .15s}body.ws-projects .proj-card:before{top:5px;left:5px;border-top:1px solid;border-left:1px solid}body.ws-projects .proj-card:after{bottom:5px;right:5px;border-bottom:1px solid;border-right:1px solid}body.ws-projects .proj-card:hover:before,body.ws-projects .proj-card:hover:after{border-color:var(--accent-deep);width:12px;height:12px}body.ws-projects .proj-head{padding:16px 20px 14px;border-bottom:1px solid var(--rule-soft)}body.ws-projects .proj-h-row{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px;font-family:var(--mono);font-size:9.5px;color:var(--ink-3);letter-spacing:.14em;text-transform:uppercase}body.ws-projects .proj-h-id{color:var(--ink)}body.ws-projects .proj-h-state{display:inline-flex;align-items:center;gap:5px;color:var(--accent-deep)}body.ws-projects .proj-h-state.dormant{color:var(--ink-4)}body.ws-projects .proj-h-state.review{color:var(--md)}body.ws-projects .proj-h-state .pip{width:6px;height:6px;border-radius:50%;background:currentColor;animation:projPulse 2s ease-in-out infinite}body.ws-projects .proj-h-state.dormant .pip{animation:none}@keyframes projPulse{0%,to{opacity:1}50%{opacity:.35}}body.ws-projects .proj-title{font-family:var(--serif);font-size:24px;letter-spacing:-.01em;line-height:1.15;color:var(--ink);margin:0 0 6px;font-weight:400;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}body.ws-projects .proj-title em{font-style:italic;color:var(--accent-deep)}body.ws-projects .proj-client{font-family:var(--mono);font-size:10px;color:var(--ink-3);letter-spacing:.08em;text-transform:uppercase}body.ws-projects .proj-body{padding:14px 20px;display:flex;flex-direction:column;gap:10px;flex:1}body.ws-projects .proj-counts{display:grid;grid-template-columns:repeat(3,1fr);border-top:1px dotted var(--rule-soft);border-bottom:1px dotted var(--rule-soft);padding:10px 0}body.ws-projects .pc{display:flex;flex-direction:column;gap:3px;border-right:1px dotted var(--rule-soft);padding-right:10px}body.ws-projects .pc:last-child{border-right:none;padding-right:0}body.ws-projects .pc-l{font-family:var(--mono);font-size:9px;color:var(--ink-4);letter-spacing:.14em;text-transform:uppercase}body.ws-projects .pc-v{font-family:var(--serif);font-size:22px;color:var(--ink);line-height:1}body.ws-projects .pc-v em{font-style:italic;color:var(--accent-deep)}body.ws-projects .proj-recent{display:flex;flex-direction:column;gap:6px;font-family:var(--mono);font-size:10.5px;color:var(--ink-2);letter-spacing:.04em}body.ws-projects .pr-item{display:grid;grid-template-columns:auto 1fr auto;gap:8px;align-items:center}body.ws-projects .pr-kind{font-family:var(--mono);font-size:9px;color:var(--ink-3);letter-spacing:.14em;text-transform:uppercase;width:48px}body.ws-projects .pr-text{color:var(--ink-2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:11px}body.ws-projects .pr-time{font-family:var(--mono);font-size:9.5px;color:var(--ink-4);letter-spacing:.08em;text-transform:uppercase}body.ws-projects .proj-foot{display:flex;justify-content:space-between;align-items:center;padding:10px 20px;border-top:1px solid var(--rule-soft);background:#00000005;font-family:var(--mono);font-size:9.5px;color:var(--ink-3);letter-spacing:.1em;text-transform:uppercase}body.ws-projects .proj-foot .open{display:inline-flex;align-items:center;gap:6px;color:var(--ink);transition:color .15s,gap .15s}body.ws-projects .proj-card:hover .proj-foot .open{color:var(--accent-deep);gap:10px}body.ws-projects .proj-foot .open svg{width:11px;height:11px}body.ws-projects .proj-tags{display:flex;gap:5px;flex-wrap:wrap;margin-top:4px}body.ws-projects .tg{font-family:var(--mono);font-size:9px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3);border:1px solid var(--rule-thread);border-radius:2px;padding:2px 6px}body.ws-projects .proj-new{position:relative;background:transparent;border:1px dashed var(--rule-thread);border-radius:8px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;padding:32px 24px;cursor:pointer;color:var(--ink-3);transition:border-color .15s,background .15s,color .15s;min-height:280px;font:inherit}body.ws-projects .proj-new:hover{border-color:var(--accent-deep);border-style:solid;background:#d7ede066;color:var(--accent-deep)}body.ws-projects .proj-new-cross{font-size:36px;line-height:1;font-family:var(--serif)}body.ws-projects .proj-new-l{font-family:var(--mono);font-size:10.5px;letter-spacing:.14em;text-transform:uppercase}body.ws-projects .proj-new-h{font-family:var(--serif);font-size:18px;color:var(--ink-2)}body.ws-projects .proj-new:hover .proj-new-h{color:var(--accent-deep)}body.ws-projects .proj-skel{background:var(--paper-2);border:1px solid var(--rule-soft);border-radius:8px;padding:16px 20px;min-height:280px;display:flex;flex-direction:column;gap:10px;position:relative;overflow:hidden}body.ws-projects .proj-skel:after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,transparent,rgba(255,255,255,.5),transparent);animation:projShim 1.4s linear infinite}@keyframes projShim{0%{transform:translate(-100%)}to{transform:translate(100%)}}body.ws-projects .skel-block{height:14px;background:var(--rule-soft);border-radius:2px;opacity:.4}body.ws-projects .skel-block.short{width:60%}body.ws-projects .skel-block.tiny{width:35%}body.ws-projects .ws-empty{grid-column:1 / -1;padding:60px 28px;text-align:center;color:var(--ink-3);font-family:var(--serif);font-size:16px;line-height:1.5}body.ws-projects .proj-section{margin-bottom:22px;background:var(--paper-2);border:1px solid var(--rule-soft);border-radius:8px;padding:18px 22px}body.ws-projects .proj-section-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px;padding-bottom:10px;border-bottom:1px solid var(--rule-soft)}body.ws-projects .proj-section-title{font-family:var(--serif);font-weight:400;font-size:22px;letter-spacing:-.005em;color:var(--ink);margin:0}body.ws-projects .proj-count{font-family:var(--mono);font-size:10.5px;color:var(--ink-3);letter-spacing:.12em;text-transform:uppercase;margin-left:8px}body.ws-projects .lib-back{font-family:var(--mono);font-size:10.5px;color:var(--ink-3);text-decoration:none;letter-spacing:.12em;text-transform:uppercase;transition:color .15s}body.ws-projects .lib-back:hover{color:var(--accent-deep)}body.ws-projects .ws-row{display:flex;justify-content:space-between;align-items:center;padding:10px 12px;border-bottom:1px dotted var(--rule-soft);text-decoration:none;color:var(--ink);transition:background .15s}body.ws-projects .ws-row:last-child{border-bottom:none}body.ws-projects .ws-row:hover{background:#fff6}body.ws-projects .ws-row-title{font-family:var(--serif);font-size:14.5px;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0}body.ws-projects .ws-row-meta{font-family:var(--mono);font-size:10px;color:var(--ink-3);letter-spacing:.04em}body.ws-projects .lib-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}@media(max-width:980px){body.ws-projects .lib-grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:640px){body.ws-projects .lib-grid{grid-template-columns:1fr}}body.ws-projects .lib-card-link{display:flex;flex-direction:column;gap:4px;padding:11px 14px;background:var(--paper);border:1px solid var(--rule-soft);border-radius:4px;text-decoration:none;color:var(--ink);transition:border-color .15s,transform .15s}body.ws-projects .lib-card-link:hover{border-color:var(--ink);transform:translateY(-1px)}body.ws-projects .lib-card-name{font-family:var(--serif);font-size:14.5px;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}body.ws-projects .lib-card-meta{font-family:var(--mono);font-size:9.5px;color:var(--ink-3);letter-spacing:.04em}body.ws-projects .proj-title-input{flex:1;min-width:240px;font-family:var(--serif);font-weight:400;font-size:clamp(40px,5vw,68px);letter-spacing:-.012em;line-height:1;margin:0;padding:4px 0;color:var(--ink);background:transparent;border:none;outline:none;border-bottom:2px dotted var(--rule-soft);width:100%}body.ws-projects .proj-title-input:focus{border-bottom-color:var(--accent-deep)}body.ws-projects .proj-title-input.is-error{border-bottom-color:var(--hi);color:var(--hi)}body.ws-projects .ws-foot{margin-top:36px;padding-top:18px;border-top:1px solid var(--rule-soft);display:flex;justify-content:space-between;align-items:center;font-family:var(--mono);font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3)}body.ws-projects .ws-foot a{color:var(--ink-3);text-decoration:none;border-bottom:1px solid var(--rule-soft);padding-bottom:1px}body.ws-projects .ws-foot a:hover{color:var(--accent-deep);border-color:var(--accent-deep)}body.ws-projects .attach-modal{position:fixed;inset:0;z-index:1000;background:#0e151266;backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;padding:24px}body.ws-projects .attach-modal-inner{background:var(--paper);border:1px solid var(--ink);border-radius:8px;max-width:520px;width:100%;max-height:90vh;display:flex;flex-direction:column;overflow:hidden;position:relative}body.ws-projects .attach-modal-head{display:flex;justify-content:space-between;align-items:center;padding:16px 22px 14px;border-bottom:1px solid var(--rule-soft)}body.ws-projects .attach-modal-title{font-family:var(--serif);font-weight:400;font-size:22px;letter-spacing:-.005em;margin:0}body.ws-projects .attach-modal-close{width:28px;height:28px;background:transparent;border:1px solid var(--rule-soft);border-radius:4px;color:var(--ink-3);cursor:pointer;font-size:14px;line-height:1}body.ws-projects .attach-modal-close:hover{border-color:var(--ink);color:var(--ink)}body.ws-projects .attach-modal-body{flex:1;overflow-y:auto;padding:18px 22px;display:flex;flex-direction:column;gap:14px}body.ws-projects .attach-modal-foot{padding:12px 22px;border-top:1px solid var(--rule-soft);display:flex;justify-content:flex-end}body.ws-projects .attach-modal-foot .ws-btn{padding:9px 16px;font-family:var(--mono);font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;background:var(--ink);color:var(--paper);border:1px solid var(--ink);border-radius:4px;cursor:pointer;transition:background .15s,border-color .15s}body.ws-projects .attach-modal-foot .ws-btn:hover{background:var(--accent-deep);border-color:var(--accent-deep)}body.ws-projects .rv-field{display:flex;flex-direction:column;gap:6px}body.ws-projects .rv-field-label{font-family:var(--mono);font-size:10px;color:var(--ink-3);letter-spacing:.12em;text-transform:uppercase}body.ws-projects .rv-field input,body.ws-projects .rv-field textarea{font-family:var(--sans);font-size:14px;padding:10px 12px;border:1px solid var(--rule-soft);border-radius:4px;background:var(--paper);color:var(--ink);outline:none;resize:vertical}body.ws-projects .rv-field input:focus,body.ws-projects .rv-field textarea:focus{border-color:var(--ink)}
