:root{--bg:#f3efe6;--bg-deep:#e7e0d2;--ink:#1a3a2f;--ink-soft:#4a6358;--panel:#fffdf8;--panel-border:#d7cebc;--accent:#c4a35a;--accent-ink:#3d2e0a;--danger:#9b2c2c;--shadow:0 18px 50px #1a3a2f1f;--radius:14px;--font:"DM Sans", system-ui, sans-serif;--display:"Instrument Serif", Georgia, serif}*,:before,:after{box-sizing:border-box}html,body{min-height:100%;font-family:var(--font);color:var(--ink);background:radial-gradient(1200px 600px at 10% -10%, #dfe8e2 0%, transparent 55%), radial-gradient(900px 500px at 100% 0%, #efe3c4 0%, transparent 50%), linear-gradient(180deg, var(--bg) 0%, var(--bg-deep) 100%);margin:0}body,#app{min-height:100vh}.shell{flex-direction:column;min-height:100vh;display:flex}.topbar{border-bottom:1px solid var(--panel-border);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);z-index:20;background:#fffdf8d1;justify-content:space-between;align-items:center;gap:1rem;padding:.9rem 1.25rem;display:flex;position:sticky;top:0}.brand{align-items:center;gap:.75rem;display:flex}.brand-mark{background:linear-gradient(145deg, #23493c, #1a3a2f), var(--ink);width:2.25rem;height:2.25rem;box-shadow:inset 0 0 0 1.5px var(--accent);border-radius:.7rem;position:relative}.brand-mark:after{content:"";border:1.5px solid #e8f0ec;border-radius:2px;position:absolute;inset:7px 8px 8px}.brand-name{font-family:var(--display);letter-spacing:.01em;margin:0;font-size:1.45rem;line-height:1}.brand-tag{color:var(--ink-soft);letter-spacing:.04em;text-transform:uppercase;margin:.15rem 0 0;font-size:.75rem}.top-actions{flex-wrap:wrap;gap:.6rem;display:flex}.btn{appearance:none;border:1px solid var(--panel-border);background:var(--panel);color:var(--ink);font:inherit;cursor:pointer;border-radius:999px;padding:.55rem .95rem;font-size:.9rem;font-weight:600;transition:transform .15s,background .15s,border-color .15s}.btn:hover:not(:disabled){border-color:#c2b79f;transform:translateY(-1px)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn-primary{background:var(--ink);color:#f5f8f6;border-color:var(--ink)}.btn-accent{background:var(--accent);color:var(--accent-ink);border-color:#b08d3f}.btn-ghost{background:0 0}.btn-ghost.danger{color:var(--danger);border-color:#e0b4b4}.file-btn{align-items:center;display:inline-flex}.workspace{flex:1;grid-template-columns:240px 1fr;min-height:0;display:grid}.toolbar{border-right:1px solid var(--panel-border);background:#fffdf8b3;flex-direction:column;gap:1rem;padding:1rem .85rem 1.5rem;display:flex;overflow:auto}.toolbar-label,.field-label{letter-spacing:.08em;text-transform:uppercase;color:var(--ink-soft);margin:0;font-size:.72rem;font-weight:700}.tool-grid{gap:.4rem;display:grid}.tool{width:100%;color:var(--ink);font:inherit;text-align:left;cursor:pointer;background:0 0;border:1px solid #0000;border-radius:10px;grid-template-columns:1.4rem 1fr;align-items:center;gap:.55rem;padding:.55rem .65rem;font-size:.88rem;font-weight:500;transition:background .15s,border-color .15s;display:grid}.tool svg{fill:currentColor;width:1.15rem;height:1.15rem}.tool:hover{background:#1a3a2f0f}.tool.active{color:var(--ink);background:#e8f0ec;border-color:#b7cfc3}.toolbar-section{flex-direction:column;gap:.45rem;display:flex}.actions-col{gap:.4rem}.actions-col .btn{border-radius:10px;width:100%}#color-input{border:1px solid var(--panel-border);background:var(--panel);cursor:pointer;border-radius:10px;width:100%;height:2.4rem;padding:0}#stroke-input,#opacity-input{width:100%;accent-color:var(--ink)}.stage{min-width:0;min-height:calc(100vh - 70px);padding:1rem;position:relative}.stage.dragover{outline:2px dashed var(--accent);outline-offset:-8px;background:#c4a35a14}.empty-state{text-align:center;max-width:36rem;margin:8vh auto 0;padding:2.5rem 1.5rem;animation:.55s both rise}.empty-state h1{font-family:var(--display);color:var(--ink);margin:0;font-size:clamp(2rem,4vw,3rem);font-weight:400;line-height:1.1}.empty-state p{color:var(--ink-soft);margin:.9rem 0 1.5rem;font-size:1.05rem;line-height:1.5}.editor-wrap{flex-direction:column;gap:.75rem;height:100%;animation:.35s both rise;display:flex}.hidden{display:none!important}.page-chrome{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;padding:.35rem .25rem;display:flex}.page-meta{align-items:center;gap:.55rem;min-width:0;display:flex}.file-name{white-space:nowrap;text-overflow:ellipsis;max-width:40vw;font-weight:600;overflow:hidden}.badge{letter-spacing:.04em;text-transform:uppercase;color:var(--accent-ink);background:#f0e2bc;border:1px solid #d4b86a;border-radius:999px;padding:.2rem .55rem;font-size:.72rem;font-weight:700}.pager{align-items:center;gap:.35rem;display:flex}.pager .btn{border-radius:10px;min-width:2.2rem;padding-inline:.65rem}.zoom{border-left:1px solid var(--panel-border);align-items:center;gap:.2rem;margin-left:.5rem;padding-left:.65rem;display:flex}#page-indicator,#zoom-label{font-variant-numeric:tabular-nums;text-align:center;min-width:3.5rem;font-size:.88rem;font-weight:600}.canvas-scroller{flex:1;justify-content:center;align-items:flex-start;padding:.5rem 0 1.5rem;display:flex;overflow:auto}.canvas-stack{box-shadow:var(--shadow);background:#fff;border-radius:4px;line-height:0;position:relative}#pdf-canvas,#edit-canvas{display:block}#edit-canvas{position:absolute;inset:0}.canvas-stack .canvas-container{inset:0;position:absolute!important}.toast{background:var(--ink);color:#f5f8f6;box-shadow:var(--shadow);z-index:50;border-radius:999px;padding:.7rem 1.1rem;font-size:.9rem;font-weight:500;animation:.25s both rise;position:fixed;bottom:1.25rem;left:50%;transform:translate(-50%)}@keyframes rise{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.toast.hidden{display:none}@media (width<=860px){.workspace{grid-template-columns:1fr}.toolbar{border-right:none;border-bottom:1px solid var(--panel-border);flex-flow:wrap;align-items:end}.tool-grid{grid-template-columns:repeat(auto-fit,minmax(7.5rem,1fr));width:100%}.toolbar-section{min-width:8rem}.empty-state{margin-top:3vh}}.hint{color:var(--ink-soft);margin:0;font-size:.78rem;line-height:1.35}.tool-hint{color:var(--ink-soft);white-space:nowrap;text-overflow:ellipsis;max-width:min(42vw,28rem);font-size:.8rem;overflow:hidden}.stamp-panel select,#stamp-select{width:100%;font:inherit;border:1px solid var(--panel-border);background:var(--panel);color:var(--ink);border-radius:10px;padding:.45rem .55rem;font-size:.88rem}.row-btns{grid-template-columns:1fr 1fr;gap:.4rem;display:grid}.row-btns .btn{width:100%}.modal-backdrop{z-index:100;background:#1a3a2f73;place-items:center;padding:1rem;animation:.2s both rise;display:grid;position:fixed;inset:0}.modal{background:var(--panel);border:1px solid var(--panel-border);width:min(560px,100%);box-shadow:var(--shadow);border-radius:16px;overflow:hidden}.modal-header{border-bottom:1px solid var(--panel-border);justify-content:space-between;align-items:center;padding:.9rem 1.1rem;display:flex}.modal-header h2{font-family:var(--display);margin:0;font-size:1.5rem;font-weight:400}.modal-close{cursor:pointer;color:var(--ink-soft);background:0 0;border:none;font-size:1.5rem;line-height:1}.modal-tabs{gap:.35rem;padding:.75rem 1.1rem 0;display:flex}.tab{font:inherit;cursor:pointer;color:var(--ink-soft);background:0 0;border:1px solid #0000;border-radius:999px;padding:.4rem .8rem;font-size:.88rem;font-weight:600}.tab.active{color:var(--ink);background:#e8f0ec;border-color:#b7cfc3}.modal-body{padding:.9rem 1.1rem .4rem}.sig-canvas{border:1px dashed var(--panel-border);touch-action:none;cursor:crosshair;background:linear-gradient(#fff 0%,#f7f3ea 100%);border-radius:12px;width:100%;height:180px}.sig-type-input{width:100%;font:inherit;border:1px solid var(--panel-border);border-radius:10px;margin-bottom:.75rem;padding:.65rem .8rem;font-size:1rem}.sig-type-preview{border:1px dashed var(--panel-border);min-height:100px;font-family:var(--display);color:var(--ink);background:#fff;border-radius:12px;place-items:center;padding:.5rem 1rem;font-size:2.2rem;font-style:italic;display:grid}.modal-footer{justify-content:space-between;align-items:center;gap:.75rem;padding:.9rem 1.1rem 1.1rem;display:flex}.modal-footer-right{gap:.45rem;display:flex}.tool svg [fill=none]{fill:none}.pdf-hit-layer,.pdf-image-layer{z-index:3;pointer-events:none;position:absolute;inset:0}.pdf-hit-layer.is-active,.pdf-image-layer.is-active{z-index:6}.pdf-hit,.pdf-image-hit,.pdf-text-hit{cursor:pointer;background:#c4a35a2e;border:2px dashed #c4a35a;border-radius:2px;margin:0;padding:0;transition:background .15s,border-color .15s;position:absolute;box-shadow:inset 0 0 0 1px #fffdf880}.pdf-text-hit{background:#ffd65047;border-color:#c4a35a}.pdf-text-hit:hover{background:#ffc4006b;border-color:#1a3a2f}.pdf-image-hit:hover,.pdf-hit:hover{background:#c4a35a52;border-color:#1a3a2f}.engine-badge{letter-spacing:.04em;text-transform:uppercase;border:1px solid var(--panel-border);white-space:nowrap;border-radius:999px;align-items:center;padding:.35rem .65rem;font-size:.72rem;font-weight:700;display:inline-flex}.engine-badge.online{color:#1a7a45;background:#e5f5eb;border-color:#9ed0b0}.engine-badge.offline{color:#7a5a1a;background:#f8efd9;border-color:#e0c56a}.inline-text-editor{z-index:8;outline-offset:0;resize:both;caret-color:#1a3a2f;box-sizing:border-box;border:none;border-radius:0;outline:1px solid #c4a35a;margin:0;padding:0;position:absolute;overflow:hidden;box-shadow:0 0 0 2px #c4a35a59}.image-menu{z-index:120;background:var(--panel);border:1px solid var(--panel-border);min-width:168px;box-shadow:var(--shadow);border-radius:12px;flex-direction:column;gap:.2rem;padding:.4rem;display:flex;position:fixed}.image-menu-title{letter-spacing:.06em;text-transform:uppercase;color:var(--ink-soft);margin:0;padding:.35rem .55rem .45rem;font-size:.72rem;font-weight:700}.image-menu button{appearance:none;text-align:left;font:inherit;color:var(--ink);cursor:pointer;background:0 0;border:none;border-radius:8px;padding:.5rem .65rem;font-size:.9rem;font-weight:500}.image-menu button:hover{background:#e8f0ec}.canvas-stack .canvas-container{z-index:4}.text-panel{border:1px solid var(--panel-border);background:#e8f0ec8c;border-radius:12px;padding:.65rem}#font-size-input{width:100%;accent-color:var(--ink)}.text-style-btns{grid-template-columns:repeat(3,1fr);gap:.35rem;display:grid}.style-btn{width:100%;min-height:2.2rem;font-size:1rem;border-radius:10px!important;padding:.35rem!important}.style-btn.active{background:#e8f0ec;border-color:#b7cfc3}.style-btn .u{font-weight:600;text-decoration:underline}
