:root{
      --bg:#f6f2ea;
      --panel:#ffffff;
      --panel2:#fbf7ef;
      --text:#18231d;
      --muted:#647268;
      --brand:#6b3fa0;
      --brand2:#8d62c4;
      --danger:#b42335;
      --line:#ded6ca;
      --shadow:0 18px 50px rgba(43,31,18,.12);
      --radius:16px;
    }
    *{box-sizing:border-box}
    body{
      margin:0;
      background:linear-gradient(140deg,#fffaf1,#f4ede3 52%,#f9f5ed);
      color:var(--text);
      font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif;
      min-height:100vh;
    }
    body.drag-over::before{
      content:"Drop PDF to load it";
      position:fixed;
      inset:14px;
      z-index:9999;
      display:flex;
      align-items:center;
      justify-content:center;
      text-align:center;
      border:4px dashed var(--brand);
      border-radius:24px;
      background:rgba(255,250,241,.92);
      color:var(--text);
      font-size:clamp(24px,4vw,48px);
      font-weight:900;
      letter-spacing:-.03em;
      box-shadow:0 0 0 9999px rgba(38,24,10,.18),0 18px 80px rgba(107,63,160,.22);
      pointer-events:none;
    }
    header{
      padding:24px clamp(16px,3vw,36px) 18px;
      border-bottom:1px solid rgba(43,31,18,.10);
      background:rgba(255,250,241,.82);
      position:sticky;
      top:0;
      z-index:5;
      backdrop-filter: blur(10px);
    }
    h1{margin:0;font-size:clamp(24px,3vw,38px);letter-spacing:-.03em;}
    header p{margin:.45rem 0 0;color:var(--muted);max-width:920px;line-height:1.45;}
    main{
      display:grid;
      grid-template-columns:minmax(320px,430px) 1fr;
      gap:18px;
      padding:18px clamp(12px,2.5vw,30px) 30px;
    }
    @media(max-width:980px){main{grid-template-columns:1fr}}
    .card{
      background:rgba(255,255,255,.95);
      border:1px solid rgba(43,31,18,.10);
      border-radius:var(--radius);
      box-shadow:var(--shadow);
      overflow:hidden;
    }
    .card h2{
      font-size:18px;
      margin:0;
      padding:16px 18px;
      border-bottom:1px solid rgba(43,31,18,.10);
      background:rgba(246,242,234,.72);
    }
    .content{padding:18px;}
    label{display:block;font-size:13px;font-weight:700;color:#27372e;margin-bottom:7px;}
    input,select,button,textarea{
      font:inherit;
    }
    input[type="text"],input[type="number"],select{
      width:100%;
      background:#fffdf8;
      color:var(--text);
      border:1px solid var(--line);
      border-radius:11px;
      padding:10px 11px;
      outline:none;
    }
    input[type="file"]{
      width:100%;
      padding:13px;
      border-radius:12px;
      border:1px dashed var(--line);
      background:#fffdf8;
      color:var(--muted);
    }
    input:focus,select:focus{border-color:var(--brand);box-shadow:0 0 0 3px rgba(107,63,160,.14)}
    .grid2{display:grid;grid-template-columns:1fr 1fr;gap:12px;}
    .grid4{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;}
    @media(max-width:520px){.grid2,.grid4{grid-template-columns:1fr}}
    .field{margin-bottom:14px;}
    .hint{font-size:12px;color:var(--muted);line-height:1.35;margin-top:6px;}
    .mode{
      display:grid;
      grid-template-columns:1fr 1fr;
      gap:10px;
      margin-bottom:14px;
    }
    .mode label{
      margin:0;
      background:#fffdf8;
      border:1px solid var(--line);
      border-radius:12px;
      padding:12px;
      cursor:pointer;
      color:var(--text);
    }
    .mode input{margin-right:7px;}
    .buttons{display:flex;gap:10px;flex-wrap:wrap;align-items:center;}
    button{
      border:0;
      border-radius:12px;
      background:linear-gradient(180deg,var(--brand2),var(--brand));
      color:#ffffff;
      font-weight:800;
      padding:11px 14px;
      cursor:pointer;
      box-shadow:0 8px 22px rgba(107,63,160,.20);
    }
    button.secondary{background:#ffffff;color:var(--text);box-shadow:none;border:1px solid var(--line)}
    button.danger{background:#fff0f1;color:#8f1426;box-shadow:none;border:1px solid #efb4bd}
    button:disabled{opacity:.45;cursor:not-allowed;box-shadow:none}
    .layers{
      max-height:260px;
      overflow:auto;
      border:1px solid var(--line);
      background:#fffdf8;
      border-radius:14px;
      padding:8px;
    }
    .layer-row{
      display:flex;
      align-items:flex-start;
      gap:9px;
      padding:8px 6px;
      border-radius:9px;
      font-size:14px;
      line-height:1.25;
    }
    .layer-row:hover{background:rgba(107,63,160,.07)}
    .layer-row input{margin-top:2px;accent-color:var(--brand)}
    .statbar{
      display:grid;
      grid-template-columns:repeat(4,1fr);
      gap:10px;
      margin-bottom:14px;
    }
    @media(max-width:780px){.statbar{grid-template-columns:repeat(2,1fr)}}
    .stat{
      background:#fffdf8;
      border:1px solid var(--line);
      border-radius:13px;
      padding:10px;
      min-height:64px;
    }
    .stat b{display:block;font-size:13px;color:var(--muted);margin-bottom:4px;}
    .stat span{font-size:17px;font-weight:850;}
    .preview-tools{
      display:flex;
      align-items:center;
      justify-content:space-between;
      gap:12px;
      flex-wrap:wrap;
      margin-top:12px;
    }
    .zoom-controls{
      display:flex;
      align-items:center;
      gap:8px;
      flex-wrap:wrap;
    }
    .zoom-controls input[type=range]{width:180px;}
    .zoom-controls button{padding:8px 10px;}
    #zoomLabel{min-width:48px;text-align:right;font-weight:850;}
    .preview-wrap{
      min-height:480px;
      display:flex;
      align-items:center;
      justify-content:center;
      padding:16px;
      background:
        linear-gradient(45deg,rgba(43,31,18,.045) 25%,transparent 25%),
        linear-gradient(-45deg,rgba(43,31,18,.045) 25%,transparent 25%),
        linear-gradient(45deg,transparent 75%,rgba(43,31,18,.045) 75%),
        linear-gradient(-45deg,transparent 75%,rgba(43,31,18,.045) 75%);
      background-size:28px 28px;
      background-position:0 0,0 14px,14px -14px,-14px 0;
      overflow:auto;
    }
    canvas#previewCanvas{
      max-width:none;
      height:auto;
      background:#fff;
      border-radius:8px;
      box-shadow:0 12px 34px rgba(43,31,18,.20);
    }
    .placeholder{
      max-width:560px;
      text-align:center;
      color:var(--muted);
      line-height:1.5;
      padding:44px 22px;
    }
    .status{
      border-top:1px solid rgba(43,31,18,.10);
      padding:12px 16px;
      color:var(--muted);
      font-size:13px;
      display:flex;
      gap:12px;
      align-items:center;
      justify-content:space-between;
      flex-wrap:wrap;
    }
    progress{width:220px;accent-color:var(--brand)}
    .warning{
      background:#fff7df;
      color:#6f4b00;
      border:1px solid #e7c56d;
      border-radius:12px;
      padding:10px 12px;
      font-size:13px;
      line-height:1.4;
      margin-top:12px;
    }
    .ok{
      background:#f0fff3;
      color:#256334;
      border:1px solid #a6d9af;
      border-radius:12px;
      padding:10px 12px;
      font-size:13px;
      line-height:1.4;
      margin-top:12px;
    }
    .mini{font-size:12px;color:var(--muted)}
    .topline{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:12px;}
    a{color:var(--brand)}

/* Final output crop controls share the same 4-column layout as source trim. */
.crop-note { margin-top: -4px; }
