/* ============================================================
   Cassus Sign — app styles
   Brand: #b50600 (red) + #000 (black), Open Sans, white ground.
   ============================================================ */

/* ---- Fonts ---- */
@font-face{font-family:'Open Sans';font-weight:300;font-style:normal;src:url('/assets/fonts/OpenSans-Light.ttf') format('truetype');font-display:swap;}
@font-face{font-family:'Open Sans';font-weight:400;font-style:normal;src:url('/assets/fonts/OpenSans-Regular.ttf') format('truetype');font-display:swap;}
@font-face{font-family:'Open Sans';font-weight:400;font-style:italic;src:url('/assets/fonts/OpenSans-Italic.ttf') format('truetype');font-display:swap;}
@font-face{font-family:'Open Sans';font-weight:600;font-style:normal;src:url('/assets/fonts/OpenSans-SemiBold.ttf') format('truetype');font-display:swap;}
@font-face{font-family:'Open Sans';font-weight:700;font-style:normal;src:url('/assets/fonts/OpenSans-Bold.ttf') format('truetype');font-display:swap;}
@font-face{font-family:'Open Sans';font-weight:700;font-style:italic;src:url('/assets/fonts/OpenSans-BoldItalic.ttf') format('truetype');font-display:swap;}
@font-face{font-family:'Great Vibes';src:url('/assets/fonts/GreatVibes-Regular.ttf') format('truetype');font-display:swap;}
@font-face{font-family:'Sacramento';src:url('/assets/fonts/Sacramento-Regular.ttf') format('truetype');font-display:swap;}
@font-face{font-family:'Dancing Script';src:url('/assets/fonts/DancingScript.ttf') format('truetype');font-display:swap;}
@font-face{font-family:'Allura';src:url('/assets/fonts/Allura-Regular.ttf') format('truetype');font-display:swap;}

:root{
  --red:#b50600; --red-dk:#8f0500; --black:#000;
  --ink:#161616; --muted:#6b6b6b; --line:#e6e6e6; --line-2:#f0f0f0;
  --bg:#ffffff; --shadow:0 1px 3px rgba(0,0,0,.08),0 6px 24px rgba(0,0,0,.06);
  --radius:10px;
}

*{box-sizing:border-box;}
[hidden]{display:none !important;}
html,body{margin:0;padding:0;}
body{font-family:'Open Sans',-apple-system,Segoe UI,Roboto,sans-serif;color:var(--ink);background:var(--bg);-webkit-font-smoothing:antialiased;}
h1,h2,h3,h4{margin:0 0 .4em;}
a{color:var(--red);}
button{font-family:inherit;cursor:pointer;}
input,select,textarea{font-family:inherit;font-size:14px;}

/* ---- Buttons ---- */
.btn-primary{background:var(--red);color:#fff;border:none;border-radius:8px;padding:9px 16px;font-weight:600;font-size:14px;transition:background .15s;}
.btn-primary:hover{background:var(--red-dk);}
.btn-primary:disabled{opacity:.5;cursor:default;}
.btn-ghost{background:#fff;color:var(--ink);border:1px solid var(--line);border-radius:8px;padding:8px 14px;font-weight:600;font-size:14px;transition:border-color .15s,background .15s;}
.btn-ghost:hover{border-color:#cfcfcf;background:#fafafa;}
.btn-ghost.danger{color:var(--red);border-color:#f0c9c8;}
.btn-ghost.danger:hover{background:#fdf3f3;}
.btn-block{display:block;width:100%;text-align:center;}
.sm{padding:6px 12px;font-size:13px;}

/* ---- Login ---- */
.login-body,.center-body{min-height:100vh;display:flex;align-items:center;justify-content:center;background:#fff;padding:24px;}
.login-card{width:360px;max-width:100%;background:#fff;border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow);padding:34px 30px;text-align:center;}
.login-logo{height:40px;margin-bottom:18px;}
.login-card h1{font-size:16px;font-weight:600;color:var(--muted);margin-bottom:22px;}
.login-card label{display:block;text-align:left;font-size:12px;font-weight:600;color:var(--muted);margin-bottom:14px;}
.login-card input{width:100%;margin-top:5px;padding:10px 12px;border:1px solid var(--line);border-radius:8px;}
.login-card input:focus{outline:none;border-color:var(--red);}
.login-error{background:#fdeceb;color:var(--red-dk);border:1px solid #f3c7c5;border-radius:8px;padding:9px;font-size:13px;margin-bottom:16px;}
.login-foot{margin:18px 0 0;font-size:11px;color:#b0b0b0;letter-spacing:.04em;text-transform:uppercase;}

.notice-card{max-width:460px;text-align:center;padding:40px 30px;}
.notice-card h1{font-size:22px;}
.notice-card p{color:var(--muted);}

/* ---- Topbar ---- */
.topbar{height:56px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 20px;background:#fff;position:sticky;top:0;z-index:20;}
.topbar-left{display:flex;align-items:center;gap:14px;}
.topbar-logo{height:26px;}
.topbar-sub{font-size:13px;color:var(--muted);font-weight:600;border-left:1px solid var(--line);padding-left:14px;}

/* ---- Workspace / sidebar ---- */
.workspace{display:flex;height:calc(100vh - 56px);}
.sidebar{width:270px;min-width:270px;border-right:1px solid var(--line);padding:18px 14px;overflow-y:auto;background:#fff;}
.add-client{width:100%;display:flex;align-items:center;gap:8px;justify-content:center;background:#fff;border:1.5px dashed var(--red);color:var(--red);border-radius:10px;padding:11px;font-weight:700;font-size:14px;}
.add-client:hover{background:#fdf3f3;}
.add-client .plus{font-size:18px;line-height:1;}
.sidebar-label{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:#a3a3a3;font-weight:700;margin:20px 6px 8px;}
.client-list{list-style:none;margin:0;padding:0;}
.client-list li{display:flex;align-items:center;gap:9px;padding:10px 10px;border-radius:8px;cursor:pointer;font-weight:600;font-size:14px;color:var(--ink);}
.client-list li:hover{background:#f6f6f6;}
.client-list li .ico{width:17px;height:17px;flex:none;color:var(--red);}
.client-list li .cnt{margin-left:auto;font-size:11px;color:#a3a3a3;font-weight:600;background:#f2f2f2;border-radius:11px;padding:1px 7px;min-width:20px;text-align:center;}

/* ---- Sidebar search ---- */
.sidebar-search{position:relative;margin-bottom:14px;}
.sidebar-search input{width:100%;padding:9px 12px 9px 32px;border:1px solid var(--line);border-radius:9px;font-size:13.5px;
  background:#fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%23a3a3a3' stroke-width='2' stroke-linecap='round'%3E%3Ccircle cx='11' cy='11' r='7'/%3E%3Cline x1='21' y1='21' x2='16.65' y2='16.65'/%3E%3C/svg%3E") no-repeat 9px center;}
.sidebar-search input:focus{outline:none;border-color:var(--red);}
.search-results{position:absolute;top:calc(100% + 5px);left:0;right:0;background:#fff;border:1px solid var(--line);border-radius:10px;box-shadow:var(--shadow);z-index:40;max-height:60vh;overflow-y:auto;padding:5px;}
.sr-item{display:flex;align-items:center;gap:10px;padding:8px 9px;border-radius:8px;cursor:pointer;}
.sr-item:hover{background:#f6f6f6;}
.sr-item .ico{width:16px;height:16px;flex:none;}
.sr-main{flex:1;min-width:0;display:flex;flex-direction:column;}
.sr-name{font-size:13.5px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.sr-path{font-size:11px;color:#a3a3a3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.sr-badge{font-size:9.5px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;padding:2px 6px;border-radius:10px;flex:none;background:#f0f0f0;color:#8a8a8a;}
.sr-badge.folder{background:#fdeceb;color:var(--red);}
.sr-badge.doc{background:#eef2fb;color:#3b62b0;}
.sr-badge.file{background:#eef7ef;color:#3a8a52;}
.sr-empty{padding:12px;font-size:13px;color:#a3a3a3;text-align:center;}

/* ---- Sidebar sort / groups ---- */
.sidebar-sorthead{display:flex;align-items:center;justify-content:space-between;margin:16px 6px 4px;}
.sidebar-sorthead .sidebar-label{margin:0;}
.sort-toggle{background:#fff;border:1px solid var(--line);border-radius:7px;padding:3px 9px;font-size:11px;font-weight:700;color:var(--muted);}
.sort-toggle:hover{border-color:#cfcfcf;background:#fafafa;}
.client-group{margin-bottom:10px;}
.group-head{display:flex;align-items:center;justify-content:space-between;padding:8px 8px 4px;font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:#8a8a8a;font-weight:700;}
.group-head .grp-cnt{background:#f2f2f2;border-radius:10px;padding:0 7px;font-size:10px;color:#a3a3a3;}
.group-empty{padding:4px 10px 8px;font-size:12px;color:#c0c0c0;font-style:italic;}

/* status segmented control (folder modal) */
.status-seg{display:inline-flex;border:1px solid var(--line);border-radius:7px;overflow:hidden;vertical-align:middle;margin-right:4px;}
.status-seg button{background:#fff;border:none;padding:6px 11px;font-size:12px;font-weight:700;color:var(--muted);}
.status-seg button.on{background:var(--red);color:#fff;}
.status-seg button:not(.on):hover{background:#f6f6f6;}

/* ---- Dashboard ---- */
.dash-main{flex:1;overflow-y:auto;padding:40px;}
.dash-empty{max-width:420px;margin:8vh auto 0;text-align:center;color:var(--muted);}
.dash-empty-logo{height:34px;opacity:.5;margin-bottom:20px;}
.dash-empty h2{color:var(--ink);font-size:20px;}

/* ============================================================
   Editor
   ============================================================ */
.editor{position:fixed;inset:0;background:#fff;display:flex;flex-direction:column;z-index:30;}
.editor-bar{height:56px;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:12px;padding:0 16px;flex:none;}
.editor-bar .back{padding:6px 10px;}
.doc-title-input{font-size:16px;font-weight:700;border:none;border-bottom:1px solid transparent;padding:4px 4px;min-width:220px;flex:0 1 340px;}
.doc-title-input:focus{outline:none;border-bottom-color:var(--red);}
.status-pill{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;padding:4px 9px;border-radius:20px;background:#f0f0f0;color:#8a8a8a;}
.status-pill.published{background:#e7f6ec;color:#1c8b46;}
.status-pill.completed{background:#eaf1fb;color:#1c5bb8;}
.save-state{font-size:12px;color:#a3a3a3;min-width:80px;}
.editor-bar-actions{margin-left:auto;display:flex;gap:8px;}

/* toolbar */
.toolbar{display:flex;align-items:center;gap:4px;padding:8px 16px;border-bottom:1px solid var(--line);flex-wrap:wrap;flex:none;background:#fcfcfc;}
.tb-select{border:1px solid var(--line);border-radius:7px;padding:6px 8px;font-size:13px;font-weight:600;background:#fff;}
.tb-btn{border:1px solid transparent;background:#fff;border-radius:7px;padding:6px 9px;font-size:13px;color:var(--ink);min-width:34px;}
.tb-btn:hover{background:#f0f0f0;}
.tb-btn.active{background:#fdeceb;border-color:#f0c9c8;color:var(--red);}
.tb-btn.tb-accent{color:var(--red);font-weight:700;}
.tb-div{width:1px;height:22px;background:var(--line);margin:0 5px;}

/* editor main split */
.editor-main{flex:1;display:flex;min-height:0;}
.editor-canvas{flex:1;overflow-y:auto;background:#fff;padding:34px 20px 80px;display:flex;justify-content:center;}

/* the sheet */
.paper{width:8.5in;min-height:11in;background:#fff;border:1px solid var(--line);box-shadow:var(--shadow);padding:0.5in;}
.paper .doc-body{min-height:10in;outline:none;}
.paper.editable .doc-body:focus{outline:none;}
.paper.reader{margin:0 auto;}

/* right side panel */
.side-panel{width:300px;min-width:300px;border-left:1px solid var(--line);display:flex;flex-direction:column;background:#fff;}
.side-tabs{display:flex;border-bottom:1px solid var(--line);}
.side-tab{flex:1;background:#fff;border:none;padding:12px;font-weight:700;font-size:13px;color:var(--muted);border-bottom:2px solid transparent;}
.side-tab.active{color:var(--red);border-bottom-color:var(--red);}
.side-pane{flex:1;overflow:hidden;}
.pane-scroll{height:100%;overflow-y:auto;padding:16px;}
.pane-sec{font-size:11px;text-transform:uppercase;letter-spacing:.07em;color:#a3a3a3;font-weight:700;margin:18px 0 8px;}
.pane-hint{font-size:12.5px;color:var(--muted);line-height:1.5;margin:0 0 14px;}
.fld-row{display:flex;align-items:center;gap:10px;margin-bottom:12px;}
.fld-row label{font-size:13px;font-weight:600;min-width:82px;}
.fld-row input[type=range]{flex:1;accent-color:var(--red);}
.range-val{font-size:12px;color:var(--muted);min-width:40px;text-align:right;}
.num-sm{width:64px;padding:6px 8px;border:1px solid var(--line);border-radius:7px;}
.size-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;}
.size-grid .size-item{display:flex;align-items:center;justify-content:space-between;gap:6px;border:1px solid var(--line);border-radius:8px;padding:7px 9px;}
.size-grid .size-item label{font-size:12px;font-weight:700;color:var(--muted);}
.size-grid .size-item input{width:52px;padding:4px 6px;border:1px solid var(--line);border-radius:6px;text-align:right;}
.seg{display:flex;border:1px solid var(--line);border-radius:8px;overflow:hidden;}
.seg button{flex:1;background:#fff;border:none;padding:8px;font-size:13px;font-weight:600;color:var(--muted);}
.seg button.active{background:var(--red);color:#fff;}

/* signers panel */
.signer-card{border:1px solid var(--line);border-radius:10px;padding:12px;margin-bottom:12px;background:#fff;}
.signer-card .sc-top{display:flex;align-items:center;gap:8px;margin-bottom:8px;}
.signer-card .sc-order{width:30px;height:30px;border-radius:50%;background:var(--red);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:13px;flex:none;}
.signer-card .sc-title{font-weight:700;font-size:13px;flex:1;}
.signer-card .sc-del{background:none;border:none;color:#c0c0c0;font-size:18px;line-height:1;}
.signer-card .sc-del:hover{color:var(--red);}
.signer-card input[type=text],.signer-card input[type=email]{width:100%;padding:7px 9px;border:1px solid var(--line);border-radius:7px;margin-bottom:7px;font-size:13px;}
.signer-card .sc-row{display:flex;gap:8px;align-items:center;font-size:12.5px;color:var(--muted);margin-bottom:6px;}
.signer-card .sc-self{display:flex;align-items:center;gap:6px;font-weight:600;font-size:12.5px;}
.signer-card .sc-signed{font-size:12px;color:#1c8b46;font-weight:700;}
.signer-card .sc-ord-input{width:52px;padding:5px 7px;border:1px solid var(--line);border-radius:6px;}
.signer-card.is-self{border-color:#f0c9c8;background:#fffafa;}

/* ============================================================
   Signature blocks (shared: editor slot, viewer, pdf-preview)
   ============================================================ */
.doc-body .sig-slot{display:block;border:1.5px dashed #cdb0af;background:#fdf6f6;border-radius:8px;padding:14px;margin:16px 0;color:var(--red);font-weight:600;font-size:13px;text-align:center;user-select:none;}
.doc-body .sig-slot::before{content:"✎ Signature block — set details in the Signers panel";}
.sig-block{margin:22px 0 10px;max-width:360px;}
.sig-block .sig-mark{min-height:56px;display:flex;align-items:flex-end;}
.sig-block .sig-img{max-height:56px;}
.sig-block .sig-typed{font-family:'Great Vibes',cursive;font-size:34px;line-height:1;color:#111;}
.sig-block .sig-rule{border-bottom:1px solid #222;margin-top:2px;}
.sig-block .sig-label{margin-top:5px;line-height:1.35;}
.sig-block .sig-label .sig-name{font-weight:700;font-size:14px;}
.sig-block .sig-label .sig-role{display:block;font-size:12px;color:#555;}
.sig-block .sig-label .sig-email{display:block;font-size:12px;color:#8a8a8a;}
.sig-block .sig-audit{margin-top:5px;font-size:8px;color:#a9a9a9;line-height:1.4;}
.sig-block.pending .sig-cta{background:var(--red);color:#fff;border:none;border-radius:7px;padding:9px 16px;font-weight:700;font-size:13px;}
.sig-block.pending .sig-wait{color:#b0b0b0;font-size:12px;font-style:italic;}
.sig-block.active{outline:2px solid var(--red);outline-offset:8px;border-radius:4px;}

/* ============================================================
   Modals
   ============================================================ */
.modal-overlay{position:fixed;inset:0;background:rgba(20,20,20,.42);display:flex;align-items:center;justify-content:center;z-index:60;padding:20px;}
.modal{background:#fff;border-radius:14px;box-shadow:0 20px 60px rgba(0,0,0,.28);width:520px;max-width:100%;max-height:90vh;display:flex;flex-direction:column;overflow:hidden;}
.modal-head{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid var(--line);}
.modal-head h2{font-size:16px;margin:0;}
.modal-x{background:none;border:none;font-size:24px;line-height:1;color:#b0b0b0;}
.modal-x:hover{color:var(--ink);}
.modal-body{padding:20px;overflow-y:auto;}
.modal-foot{display:flex;justify-content:flex-end;gap:10px;padding:14px 20px;border-top:1px solid var(--line);}
.fld{display:block;font-size:12px;font-weight:600;color:var(--muted);margin-bottom:14px;}
.fld input{width:100%;margin-top:5px;padding:9px 11px;border:1px solid var(--line);border-radius:8px;}
.prompt-modal{width:420px;}
.prompt-input{width:100%;padding:10px 12px;border:1px solid var(--line);border-radius:8px;}

/* folder modal */
.folder-modal{width:720px;}
.crumbs{font-size:14px;font-weight:700;display:flex;gap:6px;flex-wrap:wrap;align-items:center;}
.crumbs .cr{color:var(--red);cursor:pointer;}
.crumbs .cr.last{color:var(--ink);cursor:default;}
.crumbs .sep{color:#c9c9c9;}
.modal-toolbar{display:flex;gap:8px;align-items:center;padding:12px 20px;border-bottom:1px solid var(--line);background:#fcfcfc;flex-wrap:wrap;}
.modal-tools-right{margin-left:auto;display:flex;gap:8px;}
.upload-btn{cursor:pointer;display:inline-flex;align-items:center;}
.folder-body{min-height:280px;}
.fitem{display:flex;align-items:center;gap:11px;padding:10px 10px;border-radius:8px;border:1px solid transparent;}
.fitem:hover{background:#f7f7f7;}
.fitem.dragging{opacity:.4;}
.fitem.drop-into{border-color:var(--red);background:#fdf3f3;}
.fitem .ico{width:20px;height:20px;flex:none;color:var(--red);}
.fitem .ico.doc{color:#555;}
.fitem .nm{font-weight:600;font-size:14px;flex:1;cursor:pointer;}
.fitem .meta{font-size:12px;color:#a3a3a3;}
.fitem .pill{font-size:10px;font-weight:700;text-transform:uppercase;padding:2px 7px;border-radius:12px;background:#f0f0f0;color:#8a8a8a;}
.fitem .pill.published{background:#e7f6ec;color:#1c8b46;}
.fitem .pill.completed{background:#eaf1fb;color:#1c5bb8;}
.fitem .row-actions{display:flex;gap:4px;opacity:0;transition:opacity .1s;}
.fitem:hover .row-actions{opacity:1;}
.fitem .row-actions button,.fitem .row-actions a{background:none;border:none;color:#b0b0b0;font-size:13px;padding:3px 6px;border-radius:6px;text-decoration:none;}
.fitem .row-actions button:hover,.fitem .row-actions a:hover{color:var(--red);background:#f0f0f0;}
.folder-section-label{font-size:11px;text-transform:uppercase;letter-spacing:.07em;color:#a3a3a3;font-weight:700;margin:14px 4px 6px;}
.empty-hint{color:#b0b0b0;font-size:13px;text-align:center;padding:26px;}

/* signature capture modal */
.sig-modal{width:560px;}
.sig-tabs{display:flex;gap:6px;margin:6px 0 12px;}
.sig-tab{background:#f4f4f4;border:none;border-radius:7px;padding:7px 16px;font-weight:700;font-size:13px;color:var(--muted);}
.sig-tab.active{background:var(--red);color:#fff;}
.sig-pane canvas{width:100%;height:200px;border:1px dashed #cbcbcb;border-radius:10px;background:#fff;touch-action:none;cursor:crosshair;}
.sig-pane-tools{display:flex;align-items:center;gap:12px;margin-top:8px;}
.sig-pane-tools .hint,.hint{font-size:12px;color:#a3a3a3;}
.sig-type-input{width:100%;padding:12px;border:1px solid var(--line);border-radius:8px;font-family:'Great Vibes',cursive;font-size:30px;text-align:center;}
.sig-font-row{display:flex;gap:8px;margin-top:10px;flex-wrap:wrap;}
.sig-font-row button{border:1px solid var(--line);border-radius:8px;padding:8px 12px;background:#fff;font-size:22px;line-height:1;}
.sig-font-row button.active{border-color:var(--red);box-shadow:0 0 0 1px var(--red) inset;}
.sig-consent{font-size:11.5px;color:#9a9a9a;margin:14px 0 0;line-height:1.5;}

/* ============================================================
   Signer public page
   ============================================================ */
.sign-body{background:#fff;}
.sign-top{height:56px;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:14px;padding:0 20px;position:sticky;top:0;background:#fff;z-index:10;}
.sign-top-logo{height:24px;}
.sign-top-title{font-size:14px;font-weight:700;color:var(--muted);border-left:1px solid var(--line);padding-left:14px;}
.sign-banner{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 22px;font-size:14px;position:sticky;top:56px;z-index:9;border-bottom:1px solid var(--line);}
.sign-banner.action{background:#fdf3f3;color:var(--red-dk);}
.sign-banner.done{background:#e7f6ec;color:#12703a;}
.sign-banner.wait{background:#f6f6f6;color:var(--muted);}
.sign-stage{padding:30px 16px 90px;display:flex;justify-content:center;background:#fff;}
@media(max-width:900px){
  .side-panel{display:none;}
  .paper{width:100%;min-height:0;padding:24px;}
  .sign-stage .paper{width:100%;}
}

/* toast */
.toast{position:fixed;bottom:26px;left:50%;transform:translateX(-50%);background:#161616;color:#fff;padding:11px 20px;border-radius:10px;font-size:14px;z-index:200;box-shadow:0 8px 30px rgba(0,0,0,.3);}
.toast.err{background:var(--red);}
