@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Playfair+Display:wght@600;700&display=swap');
:root{--cream:#fff8ed;--paper:#fffdf8;--green:#073e2f;--deep:#173e3c;--teal:#39798a;--aqua:#35e5e8;--sand:#dfb999;--muted:#72817e;--line:#e9e0d3}*{box-sizing:border-box}body{margin:0;background:var(--cream);color:var(--deep);font-family:'DM Sans',sans-serif}.sidebar{position:fixed;inset:0 auto 0 0;width:245px;background:var(--green);color:white;padding:28px 18px;display:flex;flex-direction:column}.brand img{width:190px;height:auto;display:block;filter:none;background:#fff;border-radius:10px;padding:7px 9px;object-fit:contain}.brand span{display:block;font-size:10px;letter-spacing:2.6px;margin:9px 8px 34px;color:#bde6df}nav{display:grid;gap:5px}nav button{border:0;background:none;color:#dcebe7;text-align:left;padding:12px 14px;border-radius:10px;font:600 14px inherit;cursor:pointer}nav button:hover,nav button.active{background:#ffffff16;color:white}.nav-icon{width:25px;display:inline-block}.user{margin-top:auto;border-top:1px solid #ffffff24;padding:20px 8px 0;display:flex;gap:10px;align-items:center}.user>div{width:38px;height:38px;border-radius:50%;background:var(--aqua);color:var(--green);display:grid;place-items:center;font-weight:700}.user p{margin:0}.user small{display:block;color:#a8c5bf;margin-top:2px}main{margin-left:245px;padding:38px 42px 60px;max-width:1700px}header{display:flex;justify-content:space-between;gap:30px;align-items:center;margin-bottom:30px}h1,h2{font-family:'Playfair Display',serif;color:var(--green);margin:4px 0}h1{font-size:38px}h2{font-size:25px}header p{margin:5px 0;color:var(--muted)}.eyebrow{font-size:10px;font-weight:700;letter-spacing:2px;color:var(--teal)}button{font-family:inherit}.header-actions{display:flex;gap:10px}.primary,.ghost{padding:12px 18px;border-radius:10px;font-weight:700}.primary{background:var(--green);color:white;border:1px solid var(--green)}.ghost{background:white;color:var(--green);border:1px solid var(--line)}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:18px}.stats article,.panel{background:var(--paper);border:1px solid var(--line);border-radius:16px;box-shadow:0 5px 20px #21483a0a}.stats article{padding:20px}.stats span{font-size:10px;letter-spacing:1.4px;font-weight:700;color:var(--muted)}.stats strong{display:block;font:700 28px 'Playfair Display';color:var(--green);margin:8px 0 3px}.stats small{color:var(--muted)}.grid{display:grid;grid-template-columns:1.35fr 1fr;gap:18px;margin-bottom:18px}.lower{grid-template-columns:1.5fr 1fr}.panel{padding:23px}.panel-title{display:flex;align-items:center;justify-content:space-between;margin-bottom:18px}.panel-title button{border:0;background:none;color:var(--teal);font-weight:700}.restock{display:grid;grid-template-columns:42px 1fr 1.3fr 1.3fr;gap:12px;align-items:center;border-top:1px solid var(--line);padding:16px 0}.author-badge{width:38px;height:38px;border-radius:50%;background:#dff4ef;color:var(--green);display:grid;place-items:center;font-weight:700}.restock p,.bookstock span{margin:3px 0 0;color:var(--muted);font-size:12px}.bookstock b{display:block;font-size:13px}.bookstock i{display:inline-block;width:7px;height:7px;border-radius:50%;background:#e06c55}.rent{display:grid;grid-template-columns:65px 1fr 55px 55px;align-items:center;gap:8px;border-top:1px solid var(--line);padding:14px 0}.rent>b{font-size:11px;color:var(--teal)}.rent div strong,.rent div small{display:block}.rent div small{color:var(--muted);margin-top:2px}.rent span{font-size:12px;color:var(--muted)}.rent em{font-style:normal;font-weight:700}.rent.no{opacity:.65}table{width:100%;border-collapse:collapse;font-size:13px}th{text-align:left;color:var(--muted);font-size:10px;letter-spacing:.7px;padding:9px;border-bottom:1px solid var(--line)}td{padding:13px 9px;border-bottom:1px solid var(--line)}.movements p{display:flex;align-items:center;gap:12px;padding:10px 0;margin:0;border-top:1px solid var(--line)}.movements i{width:37px;height:37px;border-radius:10px;display:grid;place-items:center;font-style:normal;font-weight:700}.plus{background:#dff4e9;color:#26734d}.minus{background:#fde9e4;color:#b4513e}.movements span{flex:1}.movements span b,.movements span small{display:block}.movements small,.movements time{color:var(--muted);font-size:11px}.movements time{white-space:nowrap}@media(max-width:1100px){.stats{grid-template-columns:1fr 1fr}.grid,.lower{grid-template-columns:1fr}.restock{grid-template-columns:42px 1fr 1fr}.restock .bookstock:last-child{grid-column:3}}@media(max-width:760px){.sidebar{position:relative;width:100%;height:auto;padding:18px}.brand span,.user{display:none}.brand img{width:165px}nav{display:flex;overflow:auto;margin-top:14px}nav button{white-space:nowrap}main{margin:0;padding:24px 16px}header{align-items:flex-start;flex-direction:column}h1{font-size:30px}.stats{grid-template-columns:1fr 1fr}.stats strong{font-size:23px}.restock{grid-template-columns:40px 1fr}.bookstock{grid-column:2}.rent{grid-template-columns:58px 1fr 45px 45px}.panel{padding:17px}.lower .panel:first-child{overflow-x:auto}table{min-width:600px}}@media(max-width:440px){.stats{grid-template-columns:1fr}.header-actions{width:100%}.header-actions button{flex:1;padding:10px}}
.logout{margin-left:auto;border:0;background:#ffffff12;color:white;width:34px;height:34px;border-radius:9px;cursor:pointer}.login-page{background:var(--paper);min-height:100vh}.login-shell{min-height:100vh;display:grid;grid-template-columns:minmax(420px,1.05fr) minmax(480px,.95fr)}.login-brand{position:relative;overflow:hidden;background:var(--green);color:white;padding:42px 7vw;display:flex;flex-direction:column}.back-web{color:#c9e4de;text-decoration:none;font-size:13px;font-weight:600}.login-brand-inner{margin:auto 0;max-width:590px;position:relative;z-index:2}.login-brand-inner img{width:min(410px,80%);margin-bottom:18px}.login-brand-inner .login-logo-original{display:block;width:min(520px,94%);height:auto;background:#fff;border-radius:14px;padding:12px 16px;box-shadow:0 14px 34px #002d221f;filter:none;object-fit:contain}.app-label{display:block;color:var(--aqua);font-size:10px;font-weight:700;letter-spacing:2.7px;margin-bottom:24px}.login-brand h1{color:white;font-size:52px;line-height:1.08;margin:0 0 22px}.login-brand p{max-width:520px;color:#d4e5e0;font-size:16px;line-height:1.7}.brand-quote{margin-top:35px;font-family:'Playfair Display',serif;font-size:19px;color:#fff4e4}.login-decoration{position:absolute;right:-55px;bottom:-180px;font:700 440px/1 'Playfair Display';color:#ffffff08;transform:rotate(-8deg)}.login-main{margin:0;padding:55px clamp(35px,7vw,110px) 28px;max-width:none;display:flex;flex-direction:column;justify-content:center;background:linear-gradient(145deg,#fffdf8,#fff5e7)}.login-card{width:100%;max-width:480px;margin:auto}.login-card h2{font-size:38px;margin-top:7px}.login-intro{color:var(--muted);margin:7px 0 30px}.login-card form>label{display:block;font-size:13px;font-weight:700;margin:0 0 18px}.login-card input[type=email],.login-card input[type=password]{width:100%;margin-top:8px;border:1px solid var(--line);background:white;border-radius:11px;padding:14px 15px;font:inherit;color:var(--deep);outline:none}.login-card input:focus{border-color:var(--teal);box-shadow:0 0 0 3px #39798a18}.password-wrap{position:relative}.password-wrap input{padding-right:65px!important}.password-wrap button{position:absolute;right:10px;top:18px;border:0;background:none;color:var(--teal);font-weight:700;cursor:pointer}.login-options{display:flex;justify-content:space-between;gap:15px;align-items:center;font-size:12px;margin:-3px 0 23px}.remember{display:flex!important;align-items:center;gap:5px;margin:0!important;font-weight:500!important}.login-options a,.login-help a{color:var(--teal);text-decoration:none;font-weight:700}.login-submit{width:100%;border:0;border-radius:11px;background:var(--green);color:white;padding:15px;font-weight:700;font-size:14px;cursor:pointer}.login-msg{min-height:20px;color:#a24f3f;font-size:12px;line-height:1.5}.demo-box{border-top:1px solid var(--line);margin-top:22px;padding-top:22px}.demo-box>strong{font-family:'Playfair Display';font-size:18px;color:var(--green)}.demo-box p{color:var(--muted);font-size:12px;margin:5px 0 12px}.demo-box div{display:flex;gap:8px}.demo-box button{flex:1;background:white;border:1px solid var(--line);border-radius:9px;padding:10px;color:var(--green);font-weight:700;cursor:pointer}.demo-box button:hover{border-color:var(--teal)}.login-help{text-align:center;color:var(--muted);font-size:12px;margin-top:25px}.login-main footer{text-align:center;color:#9aaaa5;font-size:11px}.author-stats article:last-child strong{font-size:23px}.author-book{display:flex;justify-content:space-between;align-items:center;border-top:1px solid var(--line);padding:17px 0}.author-book small{display:block;color:var(--muted);margin-top:4px}.stock-low,.stock-ok{font-size:11px;font-weight:700;padding:6px 9px;border-radius:20px}.stock-low{background:#fde9e4;color:#a54f3d}.stock-ok{background:#dff4e9;color:#26734d}.shelf-card{border-top:1px solid var(--line);padding-top:18px}.shelf-card>b{font-size:11px;color:var(--teal);letter-spacing:1px}.shelf-card h3{font:700 24px 'Playfair Display';color:var(--green);margin:7px 0 3px}.shelf-card p{color:var(--muted);font-size:13px}.shelf-card>strong{display:block;font:700 28px 'Playfair Display';color:var(--green);margin:18px 0}.shelf-card>strong small{font:500 12px 'DM Sans';color:var(--muted)}.shelf-actions{display:flex;gap:8px}.shelf-actions button{font-size:12px;padding:10px 12px}@media(max-width:900px){.login-shell{grid-template-columns:1fr}.login-brand{min-height:320px;padding:30px}.login-brand-inner{margin:45px 0 20px}.login-brand-inner img{width:260px}.login-brand h1{font-size:38px}.login-brand p{display:none}.brand-quote{margin-top:20px}.login-main{padding:40px 25px}.login-card{max-width:520px}}@media(max-width:520px){.login-brand{min-height:265px}.login-brand h1{font-size:31px}.login-brand-inner{margin:30px 0 10px}.login-main{padding:32px 18px}.login-card h2{font-size:31px}.demo-box div{flex-direction:column}.login-options{align-items:flex-start;flex-direction:column}.shelf-actions{flex-direction:column}}
.book-stats{margin-bottom:18px}.books-panel{padding:0;overflow:hidden}.books-toolbar{padding:23px;display:flex;justify-content:space-between;align-items:end;gap:20px}.book-filters{display:flex;gap:9px}.book-filters input,.book-filters select,.modal input,.modal select{border:1px solid var(--line);background:white;border-radius:10px;padding:11px 13px;font:inherit;color:var(--deep)}.book-filters input{width:280px}.books-table-wrap{overflow:auto}.books-table{min-width:900px}.books-table th:first-child,.books-table td:first-child{padding-left:23px}.books-table th:last-child,.books-table td:last-child{padding-right:23px}.book-cell{display:flex;align-items:center;gap:11px}.book-cell small,.royalty-euro,.stock-min{display:block;color:var(--muted);font-size:10px;margin-top:3px}.mini-cover{width:34px;height:45px;border-radius:4px;background:linear-gradient(145deg,var(--green),var(--teal));color:white;display:grid;place-items:center;font:700 18px 'Playfair Display'}.shelf-code{color:var(--teal);font-size:11px}.row-action{border:0;background:none;color:var(--teal);font-weight:700;cursor:pointer}.modal-backdrop{position:fixed;inset:0;background:#073e2f99;display:none;place-items:center;padding:20px;z-index:20}.modal-backdrop.open{display:grid}.modal{width:min(720px,100%);max-height:90vh;overflow:auto;background:var(--paper);border-radius:20px;padding:30px;box-shadow:0 25px 80px #002d2245;position:relative}.small-modal{width:min(480px,100%)}.modal-close{position:absolute;right:18px;top:14px;border:0;background:none;font-size:27px;color:var(--muted);cursor:pointer}.modal-lead{color:var(--muted);margin:5px 0 24px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}.modal label{display:block;font-size:12px;font-weight:700;margin-bottom:15px}.modal label input,.modal label select{display:block;width:100%;margin-top:7px}.modal-actions{display:flex;justify-content:flex-end;gap:9px;border-top:1px solid var(--line);padding-top:20px;margin-top:8px}.toast{position:fixed;right:25px;bottom:25px;background:var(--green);color:white;padding:14px 18px;border-radius:11px;box-shadow:0 12px 35px #002d2233;transform:translateY(90px);opacity:0;transition:.25s;z-index:30}.toast.show{transform:none;opacity:1}@media(max-width:760px){.books-toolbar{align-items:stretch;flex-direction:column}.book-filters{flex-direction:column}.book-filters input{width:100%}.form-grid{grid-template-columns:1fr}.modal{padding:24px 18px}}

nav a{display:block;text-decoration:none;color:#dcebe7;padding:12px 14px;border-radius:10px;font-weight:600;font-size:14px}nav a:hover{background:#ffffff16;color:white}.button-link{text-decoration:none;display:inline-block}.notice{padding:12px 15px;border-radius:10px;margin:0 0 18px;font-size:13px}.notice.success{background:#dff4e9;color:#26734d}.notice.error{background:#fde9e4;color:#a54f3d}.cell-sub{display:block;color:var(--muted);font-size:11px;margin-top:4px}.status-pill{font-size:11px;font-weight:700;padding:6px 9px;border-radius:20px}.status-pill.ok{background:#dff4e9;color:#26734d}.status-pill.off{background:#eee9e2;color:#786f66}.users-panel details{position:relative}.users-panel summary{cursor:pointer;color:var(--teal);font-weight:700;list-style:none}.action-pop{position:absolute;right:0;z-index:5;background:white;border:1px solid var(--line);border-radius:12px;padding:8px;box-shadow:0 12px 30px #073e2f18;min-width:180px;display:grid;gap:6px}.action-pop form,.action-pop button{width:100%}.action-pop .ghost{padding:9px 10px}.modal input:not([type=hidden]),.modal select{width:100%;margin-top:7px;border:1px solid var(--line);background:white;border-radius:10px;padding:11px 13px;font:inherit}.roles-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.role-card>p{color:var(--muted);min-height:38px}.permission-list{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:18px 0}.permission-list label{display:flex;gap:9px;align-items:flex-start;border:1px solid var(--line);border-radius:10px;padding:10px;font-size:12px}.permission-list small{display:block;color:var(--muted);margin-top:2px}.admin-lock{margin-top:18px;padding:14px;border-radius:10px;background:#dff4e9;color:#26734d;font-weight:700}@media(max-width:900px){.roles-grid{grid-template-columns:1fr}.permission-list{grid-template-columns:1fr}}

/* V1.3.3 · Perfil y cierre de sesión visibles también en móvil */
@media(max-width:760px){
  .sidebar .user{
    display:flex;
    margin-top:16px;
    padding:16px 8px 2px;
    border-top:1px solid #ffffff24;
    width:100%;
  }
  .sidebar .user p{min-width:0;flex:1;color:#fff;font-size:13px;line-height:1.25}
  .sidebar .user small{display:block;color:#b9d1cb;font-size:11px;margin-top:3px}
  .sidebar .logout{
    display:grid;
    place-items:center;
    flex:0 0 38px;
    width:38px;
    height:38px;
    text-decoration:none;
    font-size:18px;
  }
}

/* V1.3.4 · En móvil, perfil justo debajo del logo y antes del menú */
@media(max-width:760px){
  .sidebar .brand{order:1}
  .sidebar .user{
    order:2;
    margin:12px 0 0;
    padding:12px 8px;
    border-top:1px solid #ffffff24;
    border-bottom:1px solid #ffffff24;
  }
  .sidebar nav{
    order:3;
    margin-top:12px;
  }
}

/* V1.3.5 · Cabecera móvil en dos columnas: logo | usuario */
@media(max-width:760px){
  .sidebar{
    display:grid;
    grid-template-columns:minmax(0, 44%) minmax(0, 56%);
    grid-template-areas:"brand user" "nav nav";
    align-items:center;
    gap:0;
  }
  .sidebar .brand{
    grid-area:brand;
    min-width:0;
    padding-right:12px;
  }
  .sidebar .brand img{
    width:100%;
    max-width:165px;
    margin:0;
  }
  .sidebar .user{
    grid-area:user;
    min-width:0;
    margin:0;
    padding:5px 0 5px 12px;
    border-top:0;
    border-bottom:0;
    border-left:1px solid #ffffff24;
    gap:8px;
  }
  .sidebar .user>div{
    width:34px;
    height:34px;
    flex:0 0 34px;
    font-size:13px;
  }
  .sidebar .user p{
    overflow:hidden;
    font-size:12px;
  }
  .sidebar .user p:first-line{font-weight:600}
  .sidebar .user small{
    font-size:10px;
    white-space:nowrap;
    overflow:hidden;
    text-overflow:ellipsis;
  }
  .sidebar .logout{
    flex:0 0 34px;
    width:34px;
    height:34px;
  }
  .sidebar nav{
    grid-area:nav;
    margin-top:14px;
    width:100%;
  }
}
@media(max-width:390px){
  .sidebar{grid-template-columns:minmax(0, 42%) minmax(0, 58%);padding:15px 12px}
  .sidebar .brand{padding-right:9px}
  .sidebar .user{padding-left:9px;gap:6px}
  .sidebar .user>div{width:30px;height:30px;flex-basis:30px}
  .sidebar .logout{width:30px;height:30px;flex-basis:30px}
}

/* V1.3.6 · En móvil ocultamos cerrar sesión; se mantiene logo | usuario + rol */
@media(max-width:760px){
  .sidebar .logout{display:none !important}
  .sidebar .user p{padding-right:4px}
}

/* V1.3.7 · Cabecera móvil: nombre/rol a la izquierda e inicial a la derecha */
@media(max-width:760px){
  .sidebar .user{
    flex-direction:row-reverse;
    justify-content:flex-start;
  }
  .sidebar .user p{
    flex:1;
    text-align:right;
    padding-right:0;
  }
  .sidebar .user small{
    text-align:right;
  }
}

/* V1.3.8 · Cabecera móvil: usuario a la izquierda | logo a la derecha */
@media(max-width:760px){
  .sidebar{
    grid-template-columns:minmax(0,56%) minmax(0,44%);
    grid-template-areas:"user brand" "nav nav";
  }
  .sidebar .user{
    padding:5px 12px 5px 0;
    border-left:0;
    border-right:1px solid #ffffff24;
  }
  .sidebar .brand{
    padding-right:0;
    padding-left:12px;
    display:flex;
    justify-content:flex-end;
  }
  .sidebar .brand img{margin-left:auto;margin-right:0}
}
@media(max-width:390px){
  .sidebar{grid-template-columns:minmax(0,58%) minmax(0,42%)}
  .sidebar .user{padding-right:9px}
  .sidebar .brand{padding-left:9px}
}

/* V1.3.9 · Cabecera móvil: inicial a la izquierda, seguida de nombre y rol */
@media(max-width:760px){
  .sidebar .user{
    flex-direction:row;
    justify-content:flex-start;
  }
  .sidebar .user p{
    flex:1;
    text-align:left;
    padding-right:0;
  }
  .sidebar .user small{
    text-align:left;
  }
}
/* V1.4 · Estantes y alquileres */
.status-pill.warn{background:#fff0cc;color:#8a5a00}.alert-panel{border-color:#e6b55b;background:#fffaf0;margin-bottom:18px}.admin-task{display:flex;justify-content:space-between;align-items:center;gap:18px;padding:16px 0;border-top:1px solid #ead8b6}.admin-task:first-of-type{margin-top:14px}.admin-task strong,.admin-task small{display:block}.admin-task small,.admin-task p{color:var(--muted);margin:5px 0;font-size:12px}.type-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:18px 0}.type-grid article{border:1px solid var(--line);background:white;border-radius:12px;padding:15px}.type-grid b,.type-grid span,.type-grid strong{display:block}.type-grid span{color:var(--muted);font-size:12px;margin:5px 0}.type-grid strong{color:var(--green);font-family:'Playfair Display';font-size:19px}.row-action{padding:0}.row-action:hover{text-decoration:underline}@media(max-width:900px){.type-grid{grid-template-columns:1fr 1fr}.admin-task{align-items:flex-start;flex-direction:column}}@media(max-width:520px){.type-grid{grid-template-columns:1fr}.admin-task form,.admin-task button{width:100%}}
/* V1.5 · Librerías */
.library-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.library-card{margin:0}.library-card.is-inactive{opacity:.68}.library-card-head{display:flex;justify-content:space-between;gap:18px;align-items:flex-start}.library-card-head h2{margin:.2rem 0}.library-card-head p{margin:.25rem 0;color:#68736f}.library-metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin:22px 0}.library-metrics div{background:#f7f4ed;border-radius:12px;padding:12px}.library-metrics strong,.library-metrics small{display:block}.library-metrics strong{font-size:1.35rem;color:#174f47}.library-metrics small{font-size:.72rem;color:#6c7773}.library-actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.library-actions form{margin:0}.library-modal{max-width:820px}.library-modal textarea{width:100%;box-sizing:border-box;border:1px solid #d8dedb;border-radius:10px;padding:10px;font:inherit}.checkline{display:flex!important;align-items:center;gap:8px}.checkline input{width:auto!important}.shelf-picker{margin-top:20px;padding-top:18px;border-top:1px solid #e5e7e2}.shelf-picker h3{margin:.2rem 0}.shelf-picker p{margin:.25rem 0 14px;color:#68736f}.shelf-check-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;max-height:240px;overflow:auto}.shelf-check{display:flex!important;gap:9px;align-items:center;border:1px solid #dfe5e1;border-radius:10px;padding:10px;background:#fff}.shelf-check input{width:auto!important}.shelf-check span,.shelf-check small{display:block}.shelf-check small{font-size:.72rem;color:#74807b}.shelf-check.disabled{opacity:.45;background:#f3f3f1}.empty-library{grid-column:1/-1;text-align:center;padding:38px}.tiny{padding:6px 9px!important;font-size:.75rem!important}@media(max-width:800px){.library-grid{grid-template-columns:1fr}.library-metrics{grid-template-columns:repeat(2,1fr)}.shelf-check-grid{grid-template-columns:1fr}.library-card-head{flex-direction:column}.library-modal{max-width:calc(100vw - 24px)}}
